Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d32573c62b |
+18
-28
@@ -2,8 +2,6 @@ Common/bin/
|
||||
Common/obj/
|
||||
Config/bin/
|
||||
Config/obj/
|
||||
DataMatrix4Net/bin/
|
||||
DataMatrix4Net/obj/
|
||||
DataStreamInterface/bin/
|
||||
DataStreamInterface/obj/
|
||||
Decrypt/bin/
|
||||
@@ -16,34 +14,28 @@ Encrypt/bin/
|
||||
Encrypt/obj/
|
||||
EventViewer/bin/
|
||||
EventViewer/obj/
|
||||
Events/bin/
|
||||
Events/obj/
|
||||
FeatureVectorCalculator/bin/
|
||||
FeatureVectorCalculator/obj/
|
||||
GemCard/bin/
|
||||
GemCard/obj/
|
||||
GenCode128/bin/
|
||||
GenCode128/obj/
|
||||
GenericTest/bin/
|
||||
GenericTest/obj/
|
||||
GraphLib/bin/
|
||||
GraphLib/obj/
|
||||
MergeResultsDBs/bin/
|
||||
MergeResultsDBs/obj/
|
||||
OrderManagement/bin/
|
||||
OrderManagement/obj/
|
||||
ProductionTracing/bin/
|
||||
ProductionTracing/obj/
|
||||
RecordProcessing/bin/
|
||||
RecordProcessing/obj/
|
||||
ResetBatchNr/bin/
|
||||
ResetBatchNr/obj/
|
||||
RestClient/bin/
|
||||
RestClient/obj/
|
||||
GemCard/bin
|
||||
GemCard/obj
|
||||
GenCode128/bin
|
||||
GenCode128/obj
|
||||
GraphLib/bin
|
||||
GraphLib/obj
|
||||
MergeResultsDBs/bin
|
||||
MergeResultsDBs/obj
|
||||
OrderManagement/bin
|
||||
OrderManagement/obj
|
||||
ResetBatchNr/bin
|
||||
ResetBatchNr/obj
|
||||
RestClient/bin
|
||||
RestClient/obj
|
||||
Results/bin/
|
||||
Results/obj/
|
||||
ResultsBrowser/bin/
|
||||
ResultsBrowser/obj/
|
||||
ResultsParser/bin/
|
||||
ResultsParser/obj/
|
||||
SharedDatabase/bin
|
||||
SharedDatabase/obj
|
||||
SchematicDrawing/bin
|
||||
@@ -56,12 +48,10 @@ ToFirstMonitor/bin/
|
||||
ToFirstMonitor/obj/
|
||||
ToSecondMonitor/bin/
|
||||
ToSecondMonitor/obj/
|
||||
Users/bin/
|
||||
Users/obj/
|
||||
UserManagement/bin/
|
||||
UserManagement/obj/
|
||||
WorkflowConfigurator/bin/
|
||||
WorkflowConfigurator/obj/
|
||||
Workplace/bin/
|
||||
Workplace/obj/
|
||||
.vs/
|
||||
*.suo
|
||||
*.bak
|
||||
|
||||
@@ -52,7 +52,6 @@
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\ListViewExtensions.cs" />
|
||||
<Compile Include="Forms\LviDateTimeColumnComparer.cs" />
|
||||
<Compile Include="Forms\LviIntColumnComparer.cs" />
|
||||
<Compile Include="Forms\LviNameSurnameColumnComparer.cs" />
|
||||
<Compile Include="Forms\LviTextColumnComparer.cs" />
|
||||
@@ -64,7 +63,6 @@
|
||||
<DependentUpon>ModelessForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Formulas.cs" />
|
||||
<Compile Include="CurrentUser.cs" />
|
||||
<Compile Include="GlobalData.cs" />
|
||||
<Compile Include="IMeasurementCorrection.cs" />
|
||||
<Compile Include="IOrderInfo.cs" />
|
||||
@@ -75,9 +73,8 @@
|
||||
<Compile Include="Printers\PrintersCommon.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="QuitAppException.cs" />
|
||||
<Compile Include="ProcedureInfo.cs" />
|
||||
<Compile Include="SerializableDictionary.cs" />
|
||||
<Compile Include="StatisticalMetrics.cs" />
|
||||
<Compile Include="Telegram.cs" />
|
||||
<Compile Include="UIControls\CoolButtonCtrl.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
@@ -85,10 +82,17 @@
|
||||
<Compile Include="UIControls\CoolButtonCtrl.Designer.cs">
|
||||
<DependentUpon>CoolButtonCtrl.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UIControls\LviDateTimeColumnComparer.cs" />
|
||||
<Compile Include="UIControls\RoundedRectangle.cs" />
|
||||
<Compile Include="Units.cs" />
|
||||
<Compile Include="Utils.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="UIControls\ListViewEx.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UIControls\ListViewExtensions.cs" />
|
||||
<Compile Include="UIControls\LviIntColumnComparer.cs" />
|
||||
<Compile Include="UIControls\LviTextColumnComparer.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2021-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Common
|
||||
{
|
||||
class UserAndForm
|
||||
{
|
||||
public readonly IUser User;
|
||||
public readonly Form Form;
|
||||
|
||||
public UserAndForm(IUser user, Form form)
|
||||
{
|
||||
User = user;
|
||||
Form = form;
|
||||
}
|
||||
}
|
||||
|
||||
public static class CurrentUser
|
||||
{
|
||||
public const string AdminUsername = "admin";
|
||||
public const string AdminPassword = "staratura";
|
||||
|
||||
public static int MinPasswdLength = 0;
|
||||
public static int PasswdExpirationPeriodDays = 0;
|
||||
|
||||
public static DBSettings RemoteUsersDB = null;
|
||||
public static DBSettings LocalUsersDB = null;
|
||||
|
||||
|
||||
static readonly Stack<UserAndForm> userStack = new Stack<UserAndForm>();
|
||||
|
||||
public static Common.AuthorizedAs AuthorizedAs;
|
||||
public static DateTime LastAuthorization = DateTime.Now;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Push a new user into the stack of users and form references.
|
||||
/// Prevent double user stack entry for the same Windows form.
|
||||
/// </summary>
|
||||
/// <param name="newUser">New user</param>
|
||||
/// <param name="currentForm">Reference to the current form</param>
|
||||
public static void Change(IUser newUser, Form currentForm)
|
||||
{
|
||||
if (userStack.Count > 0 && userStack.Peek().Form == currentForm)
|
||||
{
|
||||
userStack.Pop();
|
||||
}
|
||||
|
||||
userStack.Push(new UserAndForm(newUser, currentForm));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restore an original user from the stack of users - remove user at the top of the stack.
|
||||
/// Prevent restoring when there is no entry for the form currently being closed.
|
||||
/// </summary>
|
||||
/// <param name="formBeingClosed">Reference to the form currently being closed</param>
|
||||
/// <returns>true = current user was restored, false = no current user change</returns>
|
||||
public static bool Restore(Form formBeingClosed)
|
||||
{
|
||||
if (userStack.Count > 0 && userStack.Peek().Form == formBeingClosed)
|
||||
{
|
||||
userStack.Pop();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return the user currenty at the top of the stack of users.
|
||||
/// </summary>
|
||||
public static IUser User()
|
||||
{
|
||||
return (userStack.Count > 0) ? userStack.Peek().User : null; /// TODO: Return default user when stack is empty
|
||||
}
|
||||
|
||||
public static IUser User2;
|
||||
public static IUser User3;
|
||||
|
||||
/// <summary>
|
||||
/// Return the current user name or an empty string
|
||||
/// </summary>
|
||||
public static string UserName()
|
||||
{
|
||||
if (User() == null || User().UserName == null)
|
||||
return string.Empty;
|
||||
else if (User2 == null || User2.UserName == null)
|
||||
return User().UserName;
|
||||
else if (User3 == null || User3.UserName == null)
|
||||
return string.Format("{0},{1}", User().UserName, User2.UserName);
|
||||
else
|
||||
return string.Format("{0},{1},{2}", User().UserName, User2.UserName, User3.UserName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return the current user number or 0
|
||||
/// </summary>
|
||||
public static int Number()
|
||||
{
|
||||
return (User() != null) ? User().Number : 0;
|
||||
}
|
||||
|
||||
public static bool IsPowerUser()
|
||||
{
|
||||
return (User() != null) ? User().IsPowerUser() : false;
|
||||
}
|
||||
|
||||
public static bool IsMemberOf(GID groupId)
|
||||
{
|
||||
return (User() != null) ? User().IsMemberOf(groupId) : false;
|
||||
}
|
||||
|
||||
public static bool IsMemberOf(GID[] groupIds)
|
||||
{
|
||||
return (User() != null) ? User().IsMemberOf(groupIds) : (groupIds == null);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,14 +10,14 @@ namespace Common
|
||||
/// </summary>
|
||||
public class DBSettings : ICloneable
|
||||
{
|
||||
public DBType DbType;
|
||||
public Common.DBType DbType;
|
||||
public string ConnectionString;
|
||||
|
||||
public DBSettings()
|
||||
{
|
||||
}
|
||||
|
||||
public DBSettings(DBType dbType, string connectionString)
|
||||
public DBSettings(Common.DBType dbType, string connectionString)
|
||||
{
|
||||
this.DbType = dbType;
|
||||
this.ConnectionString = connectionString;
|
||||
|
||||
@@ -350,17 +350,6 @@ namespace Common
|
||||
Count
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// State of water filled in the test bench.
|
||||
/// </summary>
|
||||
public enum FillState
|
||||
{
|
||||
Unknown, /// Test bench fill state is unknown
|
||||
Empty, /// Test bench is empty, no water
|
||||
Full, /// Test bench is full of water
|
||||
Count
|
||||
}
|
||||
|
||||
public enum MeretProtocol
|
||||
{
|
||||
[Description("<undefined>")] Undefined,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2016-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections;
|
||||
@@ -61,7 +61,8 @@ namespace Common.Forms
|
||||
private const int HDN_ITEMCHANGINGW = (HDN_FIRST-20);
|
||||
#endregion
|
||||
|
||||
public MySortOrder SortOrder = MySortOrder.None;
|
||||
|
||||
public SortOrder SortOrder = SortOrder.None;
|
||||
public int SortColumn = -1;
|
||||
|
||||
/// <summary>
|
||||
@@ -70,8 +71,7 @@ namespace Common.Forms
|
||||
private System.ComponentModel.Container components = null;
|
||||
|
||||
public event SubItemEventHandler SubItemClicked;
|
||||
public event SubItemEventHandler SubItemRightClicked;
|
||||
public event SubItemEventHandler SubItemBeginEditing;
|
||||
public event SubItemEventHandler SubItemBeginEditing;
|
||||
public event SubItemEndEditingEventHandler SubItemEndEditing;
|
||||
|
||||
public ListViewEx()
|
||||
@@ -241,22 +241,12 @@ namespace Common.Forms
|
||||
{
|
||||
base.OnMouseUp(e);
|
||||
|
||||
MouseEventArgs me = (MouseEventArgs)e;
|
||||
if (me.Button == MouseButtons.Right)
|
||||
{
|
||||
/// Right mouse button click function
|
||||
RightClickFunctionSubitemAt(new Point(e.X, e.Y));
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Normal function (=edit item)
|
||||
if (DoubleClickActivation)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (DoubleClickActivation)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
EditSubitemAt(new Point(e.X, e.Y));
|
||||
}
|
||||
EditSubitemAt(new Point(e.X, e.Y));
|
||||
}
|
||||
|
||||
protected override void OnDoubleClick(EventArgs e)
|
||||
@@ -287,20 +277,6 @@ namespace Common.Forms
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Fire SubItemRightClicked
|
||||
///</summary>
|
||||
///<param name="p">Point of click/doubleclick</param>
|
||||
private void RightClickFunctionSubitemAt(Point p)
|
||||
{
|
||||
ListViewItem item;
|
||||
int idx = GetSubItemAt(p.X, p.Y, out item);
|
||||
if (idx >= 0)
|
||||
{
|
||||
OnSubItemRightClicked(new SubItemEventArgs(item, idx));
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region In-place editing functions
|
||||
@@ -326,11 +302,6 @@ namespace Common.Forms
|
||||
if (SubItemClicked != null) SubItemClicked(this, e);
|
||||
}
|
||||
|
||||
protected void OnSubItemRightClicked(SubItemEventArgs e)
|
||||
{
|
||||
if (SubItemRightClicked != null) SubItemRightClicked(this, e);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Begin in-place editing of given cell
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2020 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
using Common;
|
||||
|
||||
namespace Common.Forms
|
||||
{
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
using Common;
|
||||
|
||||
namespace Common.Forms
|
||||
{
|
||||
public class LviNameSurnameColumnComparer : IComparer
|
||||
class LviNameSurnameColumnComparer : IComparer
|
||||
{
|
||||
private int column;
|
||||
MySortOrder order;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
using Common;
|
||||
|
||||
namespace Common.Forms
|
||||
{
|
||||
|
||||
Generated
+1
@@ -51,6 +51,7 @@
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "ModelessForm";
|
||||
this.Load += new System.EventHandler(this.ModelessForm_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
||||
@@ -6,27 +6,62 @@ namespace Common.Forms
|
||||
{
|
||||
public partial class ModelessForm : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// Called from the state machine when an operation forces a modeless dialog close.
|
||||
/// </summary>
|
||||
public static void UpdateMessage(MessageEventArgs args)
|
||||
{
|
||||
if (UpdateMessageHandler == null) return;
|
||||
try { UpdateMessageHandler(null, args); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
public static event EventHandler<MessageEventArgs> UpdateMessageHandler;
|
||||
|
||||
void OnUpdateMessage(object sender, MessageEventArgs args)
|
||||
{
|
||||
Message = args.Message;
|
||||
if (Message != null) label1.Text = Message;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called from the state machine when an operation forces a modeless dialog close.
|
||||
/// </summary>
|
||||
public static void CloseForm()
|
||||
{
|
||||
if (CloseFormHandler == null) return;
|
||||
try { CloseFormHandler(null, null); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
public static event EventHandler<EventArgs> CloseFormHandler;
|
||||
|
||||
void OnCloseForm(object sender, EventArgs args)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
|
||||
public string Title;
|
||||
public string Message;
|
||||
public Color BackgroundColor;
|
||||
public Color TextColor;
|
||||
public Font TextFont;
|
||||
public string FontFamily;
|
||||
public int FontSize;
|
||||
public FontStyle FontStyle;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Constructor to be used by the application
|
||||
/// </summary>
|
||||
/// <param name="title">Window title</param>
|
||||
/// <param name="message">Displayed message</param>
|
||||
public ModelessForm(string message, int backArgb = 0, int textArgb = 0, Font textFont = null, string title = null)
|
||||
public ModelessForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
ControlBox = false;
|
||||
|
||||
label1.Text = (message != null) ? message : "Please wait";
|
||||
BackColor = (backArgb != 0) ? Color.FromArgb(backArgb) : Color.LightGreen;
|
||||
ForeColor = (textArgb != 0) ? Color.FromArgb(textArgb) : Color.Black;
|
||||
label1.Font = (textFont != null) ? textFont : new Font("Arial", 14, FontStyle.Regular);
|
||||
Text = (title != null) ? title : string.Empty;
|
||||
|
||||
float textWidth = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(label1.Text, label1.Font).Width;
|
||||
float textHeight = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(label1.Text, label1.Font).Height;
|
||||
Width = (int)textWidth + 120; /// Form width calculated from the text width
|
||||
Height += (int)textHeight; /// Form height calculated from the text height
|
||||
|
||||
UpdateMessageHandler += delegate(object sender, MessageEventArgs args)
|
||||
{
|
||||
if (InvokeRequired) { Invoke(new EventHandler<MessageEventArgs>(OnUpdateMessage), sender, args); }
|
||||
@@ -40,37 +75,18 @@ namespace Common.Forms
|
||||
};
|
||||
}
|
||||
|
||||
private void ModelessForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (Title != null) Text = Title;
|
||||
if (Message != null) label1.Text = Message;
|
||||
if (BackgroundColor != null) BackColor = BackgroundColor;
|
||||
if (TextColor != null) ForeColor = TextColor;
|
||||
if (FontFamily != null) label1.Font = new Font(FontFamily, FontSize, FontStyle);
|
||||
|
||||
/// <summary>
|
||||
/// Called from the state machine when an operation forces a modeless dialog close.
|
||||
/// </summary>
|
||||
public void UpdateMessage(MessageEventArgs args)
|
||||
{
|
||||
if (UpdateMessageHandler == null) return;
|
||||
try { UpdateMessageHandler(null, args); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
public event EventHandler<MessageEventArgs> UpdateMessageHandler;
|
||||
void OnUpdateMessage(object sender, MessageEventArgs args)
|
||||
{
|
||||
if (args.Message != null) label1.Text = args.Message;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Called from the state machine when an operation forces a modeless dialog close.
|
||||
/// </summary>
|
||||
public static void CloseForm()
|
||||
{
|
||||
if (CloseFormHandler == null) return;
|
||||
try { CloseFormHandler(null, null); }
|
||||
catch (Exception) { }
|
||||
}
|
||||
static public event EventHandler<EventArgs> CloseFormHandler;
|
||||
void OnCloseForm(object sender, EventArgs args)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
float textWidth = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(label1.Text, label1.Font).Width;
|
||||
float textHeight = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(label1.Text, label1.Font).Height;
|
||||
Width = (int)textWidth + 120; /// Form width calculated from the text width
|
||||
Height += (int)textHeight; /// Form height calculated from the text height
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -213,9 +213,9 @@ namespace Common
|
||||
/// </summary>
|
||||
public static double ErrorFromVolumes(double measuredVolume, double trueVolume)
|
||||
{
|
||||
if (Math.Abs(trueVolume) <= float.Epsilon)
|
||||
if (trueVolume <= float.Epsilon)
|
||||
{
|
||||
if (Math.Abs(measuredVolume) <= float.Epsilon)
|
||||
if (measuredVolume <= float.Epsilon)
|
||||
{
|
||||
log.WarnFormat("ErrorFromVolumes({0},{1}) returns {2}", measuredVolume, trueVolume, -100.0);
|
||||
return -100.0;
|
||||
|
||||
+19
-1
@@ -5,10 +5,28 @@ using System;
|
||||
|
||||
namespace Common
|
||||
{
|
||||
public static class GlobalData
|
||||
public class GlobalData
|
||||
{
|
||||
public static double SampleDensity = 0; /// sample water density measured in an accredited labo [kg/m3]
|
||||
public static double SampleTemp = 0; /// sample temperature when density measured in an accredited labo [°C]
|
||||
public static double Buoyancy = 0;
|
||||
|
||||
public const string AdminUsername = "admin";
|
||||
public const string AdminPassword = "staratura";
|
||||
|
||||
public static DBSettings RemoteUsersDB = null;
|
||||
public static DBSettings LocalUsersDB = null;
|
||||
|
||||
public static IUser CurrentUser;
|
||||
public static Common.AuthorizedAs AuthorizedAs;
|
||||
public static DateTime LastAuthorization = DateTime.Now;
|
||||
|
||||
public static int MinPasswdLength = 0;
|
||||
public static int PasswdExpirationPeriodDays = 0;
|
||||
|
||||
public static string GetCurrentUserName()
|
||||
{
|
||||
return (CurrentUser != null && CurrentUser.UserName != null) ? CurrentUser.UserName : string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Common
|
||||
public interface IMeasurementCorrection
|
||||
{
|
||||
int RangeIx { get; set; }
|
||||
double Measurement { get; set; }
|
||||
double Correction { get; set; }
|
||||
float Measurement { get; set; }
|
||||
float Correction { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,6 @@ namespace Common
|
||||
int Number { get; }
|
||||
|
||||
/// Access rights
|
||||
bool IsPowerUser();
|
||||
bool IsMemberOf(GID group);
|
||||
bool IsMemberOf(GID[] groups);
|
||||
bool IsCorrectPassword(string password);
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace Common.Iperl
|
||||
public float RefFlow; /// [m3/h]
|
||||
public int Counter;
|
||||
|
||||
public Int32 EmfRaw; /// Signed EMF from iPerl opto data
|
||||
public UInt32 EmfRaw; /// From iPerl opto data
|
||||
public Int16 MagneticFieldRaw;
|
||||
public Int16 FlowRaw;
|
||||
public UInt32 VolumeRaw;
|
||||
@@ -50,7 +50,8 @@ namespace Common.Iperl
|
||||
///
|
||||
public double EMF()
|
||||
{
|
||||
return 0.000000333 * (double)EmfRaw;
|
||||
Int32 signedEmf = (EmfRaw > 0x7FFFFF) ? ((int)EmfRaw - 0x1000000) : (int)EmfRaw;
|
||||
return 0.000000333 * (double)signedEmf;
|
||||
}
|
||||
public double MagneticField() { return (double)MagneticFieldRaw; }
|
||||
public double Flow(double scalingFactor) { return 0.225 * scalingFactor * (double)FlowRaw; }
|
||||
@@ -119,10 +120,7 @@ namespace Common.Iperl
|
||||
return false;
|
||||
}
|
||||
|
||||
UInt32 uEmfRaw;
|
||||
bool f1 = UInt32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uEmfRaw);
|
||||
EmfRaw = (uEmfRaw > 0x7FFFFF) ? ((int)uEmfRaw - 0x1000000) : (int)uEmfRaw;
|
||||
|
||||
bool f1 = UInt32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out EmfRaw);
|
||||
bool f2 = Int16.TryParse(telegram.Substring(7, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out MagneticFieldRaw);
|
||||
bool f3 = Int16.TryParse(telegram.Substring(12, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out FlowRaw);
|
||||
bool f4 = UInt32.TryParse(telegram.Substring(17, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out VolumeRaw);
|
||||
@@ -245,7 +243,7 @@ namespace Common.Iperl
|
||||
DateTime.Second.ToString("D2"),
|
||||
DateTime.Millisecond.ToString("D4"),
|
||||
Counter,
|
||||
(EmfRaw & 0x00FFFFFF).ToString("X6"),
|
||||
EmfRaw.ToString("X6"),
|
||||
MagneticFieldRaw.ToString("X4"),
|
||||
FlowRaw.ToString("X4"),
|
||||
VolumeRaw.ToString("X6"),
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Common;
|
||||
|
||||
namespace TBF.UI
|
||||
namespace Common
|
||||
{
|
||||
/// <summary>
|
||||
/// Contains a procedure name and procedure selection source specification
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace Common
|
||||
{
|
||||
public class QuitAppException : Exception
|
||||
{
|
||||
public QuitAppException(string message)
|
||||
: base(message)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,338 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Common.Iperl;
|
||||
|
||||
namespace Common
|
||||
{
|
||||
public static class Extensions
|
||||
{
|
||||
public static float[] SubArray(this float[] array, int offset, int length)
|
||||
{
|
||||
float[] result = new float[length];
|
||||
Array.Copy(array, offset, result, 0, length);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public class StatisticalMetrics
|
||||
{
|
||||
const int VectorSize = 7;
|
||||
const int MinLength = 100;
|
||||
const float AdcBit = (float)57e-9;
|
||||
const int NeighbourhoodSize = 30; /// To determine extended outliers
|
||||
|
||||
/// <summary>
|
||||
/// Calculates a 7-dimensional vector with these components:
|
||||
/// x[0] = X1 = Number of outliers
|
||||
/// x[1] = X2 = Relative cal-factor shift due to outliers
|
||||
/// x[2] = X3 = Standard deviation of high-pass filteres ++++ demodulation of EMF (cut-off at Nyquist frequency)
|
||||
/// x[3] = X4 = Robust standard deviation of high-pass filtered ++++ demodulation
|
||||
/// x[4] = X5 = Peak-to-peak of low-pass filtered ++++ demodulation of EMF (cut-off TBD)
|
||||
/// x[5] = X6 = Peak-to-peak of reference flow rate
|
||||
/// x[6] = X7 = Mean impedance (++-- demodulation)
|
||||
/// </summary>
|
||||
/// <param name="optoData"></param>
|
||||
/// <param name="optoDataCount"></param>
|
||||
/// <param name="startIx"></param>
|
||||
/// <param name="endIx"></param>
|
||||
/// <returns></returns>
|
||||
public static float[] Calculate(OptoTelegramRaw[] optoData, int optoDataCount, int startIx, int endIx, bool downsample,
|
||||
out float[] offsetV, out float[] kOhmsR, out float[] kOhmsC, out float[] dutFlow,
|
||||
out float[] refFlow, out float[] flowRatio, out float[] magField, out float[] emfV,
|
||||
out PointF[] outliers, out PointF[] extendedOutliers)
|
||||
{
|
||||
offsetV = kOhmsR = kOhmsC = dutFlow = refFlow = flowRatio = magField = emfV = null;
|
||||
outliers = extendedOutliers = null;
|
||||
|
||||
if (optoData == null || optoData.Length < optoDataCount ||
|
||||
startIx < 0 || endIx >= optoDataCount || endIx <= startIx + MinLength + 3) return null;
|
||||
|
||||
float[] modulatedData = GetModulatedEmf(optoData, optoDataCount, AdcBit);
|
||||
|
||||
FindShiftAndDemodulate(modulatedData, downsample,
|
||||
new float[] { +1, +1, +1, +1 }, out offsetV,
|
||||
new float[] { +1, +1, -1, -1 }, out kOhmsR,
|
||||
new float[] { +1, -1, -1, +1 }, out kOhmsC,
|
||||
new float[] { +1, -1, +1, -1 }, out dutFlow);
|
||||
//offsetV = FirFilter(modulatedData, new float[] { 1, 3, 4, 4, 3, 1}, 0.0625F);
|
||||
|
||||
magField = GetMagField(optoData, optoDataCount, downsample, new float[] { 1, 1, 1, 1 });
|
||||
|
||||
refFlow = GetRefFlow(optoData, optoDataCount, downsample, new float[] { 1, 1, 1, 1 });
|
||||
|
||||
flowRatio = new float[Math.Min(dutFlow.Length, refFlow.Length)];
|
||||
for (int i = 0; i < flowRatio.Length; i++)
|
||||
{
|
||||
flowRatio[i] = (refFlow[i] != 0) ? dutFlow[i] / refFlow[i] : 1;
|
||||
}
|
||||
|
||||
|
||||
float[] x = new float[VectorSize];
|
||||
|
||||
/// X1 = Number of outliers
|
||||
int outliersCount = GetOutliers(flowRatio, out outliers, out extendedOutliers);
|
||||
|
||||
|
||||
/// X2 = Relative cal-factor shift due to outliers
|
||||
|
||||
/// X3 = Standard deviation of high-pass filteres ++++ demodulation of EMF (cut-off at Nyquist frequency)
|
||||
|
||||
/// X4 = Robust standard deviation of high-pass filtered ++++ demodulation
|
||||
|
||||
/// X5 = Peak-to-peak of low-pass filtered ++++ demodulation of EMF (cut-off TBD)
|
||||
|
||||
/// X6 = Peak-to-peak of reference flow rate
|
||||
|
||||
/// X7 = Mean impedance (++-- demodulation)
|
||||
double sum = 0;
|
||||
foreach (var z in kOhmsR) sum += z;
|
||||
x[6] = Convert.ToSingle(sum / kOhmsR.Length);
|
||||
|
||||
return x;
|
||||
}
|
||||
|
||||
|
||||
static float[] GetModulatedEmf(OptoTelegramRaw[] optoData, int optoDataCount, float factor)
|
||||
{
|
||||
if (optoData == null || optoDataCount < 0) return null;
|
||||
|
||||
float[] result = new float[optoDataCount];
|
||||
for (int i = 0; i < optoDataCount; i++)
|
||||
{
|
||||
result[i] = optoData[i].EmfRaw * factor;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static float[] GetMagField(OptoTelegramRaw[] optoData, int optoDataCount, bool downsample, float[] kernel)
|
||||
{
|
||||
if (optoData == null || optoDataCount < 0 || (downsample && (kernel == null || kernel.Length < 4))) return null;
|
||||
|
||||
int resultLen = downsample ? (optoDataCount / 4) : optoDataCount;
|
||||
float[] result = new float[resultLen];
|
||||
|
||||
if (downsample)
|
||||
{
|
||||
float ksum = 0;
|
||||
for (int j = 0; j < kernel.Length; j++) ksum += kernel[j];
|
||||
for (int j = 0; j < kernel.Length; j++) kernel[j] /= ksum;
|
||||
|
||||
for (int i = 0; (4 * i) + kernel.Length - 1 < optoDataCount; i++)
|
||||
{
|
||||
float sum = 0;
|
||||
for (int j = 0; j < kernel.Length; j++) sum += Convert.ToSingle(optoData[4 * i + j].MagneticFieldRaw) * kernel[j];
|
||||
result[i] = sum;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < optoDataCount; i++) result[i] = optoData[i].MagneticFieldRaw;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static float[] GetRefFlow(OptoTelegramRaw[] optoData, int optoDataCount, bool downsample, float[] kernel)
|
||||
{
|
||||
if (optoData == null || optoDataCount < 0 || (downsample && (kernel == null || kernel.Length < 4))) return null;
|
||||
|
||||
int resultLen = downsample ? (optoDataCount / 4) : optoDataCount;
|
||||
float[] result = new float[resultLen];
|
||||
|
||||
if (downsample)
|
||||
{
|
||||
float ksum = 0;
|
||||
for (int j = 0; j < kernel.Length; j++) ksum += kernel[j];
|
||||
for (int j = 0; j < kernel.Length; j++) kernel[j] /= ksum;
|
||||
|
||||
for (int i = 0; (4 * i) + kernel.Length - 1 < optoDataCount; i++)
|
||||
{
|
||||
float sum = 0;
|
||||
for (int j = 0; j < kernel.Length; j++) sum += Convert.ToSingle(optoData[4 * i + j].RefFlow) * kernel[j];
|
||||
result[i] = sum;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < optoDataCount; i++) result[i] = optoData[i].RefFlow;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static void FindShiftAndDemodulate(float[] modulatedData, bool downsample,
|
||||
float[] kernel1, out float[] data1,
|
||||
float[] kernel2, out float[] data2,
|
||||
float[] kernel3, out float[] data3,
|
||||
float[] kernel4, out float[] data4)
|
||||
{
|
||||
int shift = GetShift(modulatedData.SubArray(0, MinLength));
|
||||
|
||||
data1 = (kernel1 != null) ? Demodulate(modulatedData, kernel1, shift, downsample) : null;
|
||||
data2 = (kernel2 != null) ? Demodulate(modulatedData, kernel2, shift, downsample) : null;
|
||||
data3 = (kernel3 != null) ? Demodulate(modulatedData, kernel3, shift, downsample) : null;
|
||||
data4 = (kernel4 != null) ? Demodulate(modulatedData, kernel4, shift, downsample) : null;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Unlike FIR filtering, demodulation shifts the kernel in 4 phases
|
||||
/// </summary>
|
||||
/// <param name="data">Input data</param>
|
||||
/// <param name="kernel">Demodulation kernel</param>
|
||||
/// <param name="shift">shift 0..3</param>
|
||||
/// <returns>Output data</returns>
|
||||
static float[] Demodulate(float[] data, float[] kernel, int shift, bool downsample)
|
||||
{
|
||||
if (data == null || data.Length < MinLength || kernel == null || kernel.Length != 4)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
float ksum = 0;
|
||||
for (int i = 0; i < 4; i++) ksum += Math.Abs(kernel[i]);
|
||||
for (int i = 0; i < 4; i++) kernel[i] /= ksum;
|
||||
|
||||
int rsltLen = downsample ? (data.Length - 3) / 4 : data.Length - 3;
|
||||
float[] result = new float[rsltLen];
|
||||
|
||||
if (downsample)
|
||||
{
|
||||
for (int i = shift; i < 4 * rsltLen; i += 4)
|
||||
{
|
||||
float sum = 0;
|
||||
for (int j = 0; j < 4; j++) sum += data[i + j] * kernel[(i + j + 4 - shift) % 4];
|
||||
result[i / 4] = sum;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < rsltLen; i++)
|
||||
{
|
||||
float sum = 0;
|
||||
for (int j = 0; j < 4; j++) sum += data[i + j] * kernel[(i + j + 4 - shift) % 4];
|
||||
result[i] = sum;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Determine modulation phase by maximizing ++-- demodulation result.
|
||||
/// </summary>
|
||||
/// <param name="modulatedEmf">Input data</param>
|
||||
/// <returns>0..3 = modulation phase or, -1 = error</returns>
|
||||
static int GetShift(float[] modulatedData)
|
||||
{
|
||||
float[] kernel = new float[4] { 1, 1, -1, -1 };
|
||||
int maximizingShift = -1;
|
||||
float maximum = float.MinValue;
|
||||
|
||||
for (int shift = 0; shift <= 3; shift++)
|
||||
{
|
||||
var demodulatedCandidate = Demodulate(modulatedData, kernel, shift, false);
|
||||
float sum = 0;
|
||||
foreach (var d in demodulatedCandidate) sum += d;
|
||||
if (sum > maximum)
|
||||
{
|
||||
maximum = sum;
|
||||
maximizingShift = shift;
|
||||
}
|
||||
}
|
||||
|
||||
return maximizingShift;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// FIR filtering = convolution with a kernel
|
||||
/// </summary>
|
||||
/// <param name="data">Input data</param>
|
||||
/// <param name="kernel">Convolution kernel</param>
|
||||
/// <returns>Output data</returns>
|
||||
static float[] FirFilter(float[] data, float[] kernel, float factor)
|
||||
{
|
||||
if (data == null || kernel == null) return null;
|
||||
|
||||
int kernelLen = kernel.Length;
|
||||
int rsltLen = data.Length - kernelLen + 1;
|
||||
if (rsltLen < 0) return null;
|
||||
|
||||
float[] result = new float[rsltLen];
|
||||
for (int i = 0; i < rsltLen; i++)
|
||||
{
|
||||
float sum = 0;
|
||||
for (int j = 0; j < kernelLen; j++) sum += data[i + j] * kernel[j];
|
||||
result[i] = sum * factor;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static int GetOutliers(float[] flowRatio, out PointF[] outliers, out PointF[] extendedOutliers)
|
||||
{
|
||||
float mean = Enumerable.Average(flowRatio);
|
||||
var fr = new float[flowRatio.Length];
|
||||
for (int i = 0; i < fr.Length; i++) fr[i] = flowRatio[i] - mean;
|
||||
|
||||
Array.Sort(fr);
|
||||
float qLo = fr[fr.Length / 4];
|
||||
float qHi = fr[3 * fr.Length / 4];
|
||||
|
||||
int N = fr.Length / 2;
|
||||
float sumY = 0;
|
||||
float sumYY = 0;
|
||||
for (int i = fr.Length / 4; i < 3 * fr.Length / 4; i++)
|
||||
{
|
||||
sumY += fr[i];
|
||||
sumYY += fr[i] * fr[i];
|
||||
}
|
||||
float std = (float)Math.Sqrt(sumYY / N - (sumY / N) * (sumY / N));
|
||||
float robustStd = std * 5.1812824F;
|
||||
float threshold = 7 * robustStd;
|
||||
|
||||
/// Restore fr as it was before sorting
|
||||
for (int i = 0; i < fr.Length; i++) fr[i] = flowRatio[i] - mean;
|
||||
|
||||
IList<PointF> listOfOutliers = new List<PointF>();
|
||||
bool[] boolExtendedOutliers = new bool[fr.Length];
|
||||
int outliersCount = 0;
|
||||
for (int i = 0; i < fr.Length; i++)
|
||||
{
|
||||
if (fr[i] < -threshold || fr[i] > threshold)
|
||||
{
|
||||
/// This is an outlier
|
||||
listOfOutliers.Add(new PointF(Convert.ToSingle(i), fr[i] + mean));
|
||||
outliersCount++;
|
||||
for (int j = Math.Max(0, i - NeighbourhoodSize); j <= Math.Min(i + NeighbourhoodSize, fr.Length - 1); j++)
|
||||
{
|
||||
boolExtendedOutliers[j] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
IList<PointF> listOfExtendedOutliers = new List<PointF>();
|
||||
for (int i = 0; i < fr.Length; i++)
|
||||
{
|
||||
if (boolExtendedOutliers[i])
|
||||
{
|
||||
listOfExtendedOutliers.Add(new PointF(Convert.ToSingle(i), fr[i] + mean));
|
||||
}
|
||||
}
|
||||
|
||||
outliers = listOfOutliers.ToArray<PointF>();
|
||||
extendedOutliers = listOfExtendedOutliers.ToArray<PointF>();
|
||||
|
||||
return outliersCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,486 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2020 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Windows.Forms;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Common.UIControls
|
||||
{
|
||||
/// <summary>
|
||||
/// Event Handler for SubItem events
|
||||
/// </summary>
|
||||
public delegate void SubItemEventHandler(object sender, SubItemEventArgs e);
|
||||
/// <summary>
|
||||
/// Event Handler for SubItemEndEditing events
|
||||
/// </summary>
|
||||
public delegate void SubItemEndEditingEventHandler(object sender, SubItemEndEditingEventArgs e);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Inherited ListView to allow in-place editing of subitems
|
||||
/// </summary>
|
||||
public class ListViewEx : System.Windows.Forms.ListView
|
||||
{
|
||||
#region Interop structs, imports and constants
|
||||
/// <summary>
|
||||
/// MessageHeader for WM_NOTIFY
|
||||
/// </summary>
|
||||
private struct NMHDR
|
||||
{
|
||||
#pragma warning disable
|
||||
public IntPtr hwndFrom;
|
||||
public Int32 idFrom;
|
||||
public Int32 code;
|
||||
#pragma warning restore
|
||||
}
|
||||
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wPar, IntPtr lPar);
|
||||
[DllImport("user32.dll", CharSet=CharSet.Ansi)]
|
||||
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int len, ref int [] order);
|
||||
|
||||
// ListView messages
|
||||
private const int LVM_FIRST = 0x1000;
|
||||
private const int LVM_GETCOLUMNORDERARRAY = (LVM_FIRST + 59);
|
||||
|
||||
// Windows Messages that will abort editing
|
||||
private const int WM_HSCROLL = 0x114;
|
||||
private const int WM_VSCROLL = 0x115;
|
||||
private const int WM_SIZE = 0x05;
|
||||
private const int WM_NOTIFY = 0x4E;
|
||||
|
||||
private const int HDN_FIRST = -300;
|
||||
private const int HDN_BEGINDRAG = (HDN_FIRST-10);
|
||||
private const int HDN_ITEMCHANGINGA = (HDN_FIRST-0);
|
||||
private const int HDN_ITEMCHANGINGW = (HDN_FIRST-20);
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.Container components = null;
|
||||
|
||||
public event SubItemEventHandler SubItemClicked;
|
||||
public event SubItemEventHandler SubItemRightClicked;
|
||||
public event SubItemEventHandler SubItemBeginEditing;
|
||||
public event SubItemEndEditingEventHandler SubItemEndEditing;
|
||||
|
||||
public ListViewEx()
|
||||
{
|
||||
// This call is required by the Windows.Forms Form Designer.
|
||||
InitializeComponent();
|
||||
|
||||
base.FullRowSelect = true;
|
||||
base.View = View.Details;
|
||||
base.AllowColumnReorder = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
protected override void Dispose( bool disposing )
|
||||
{
|
||||
if( disposing )
|
||||
{
|
||||
if( components != null )
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose( disposing );
|
||||
}
|
||||
|
||||
#region Component Designer generated code
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
#endregion
|
||||
|
||||
private bool _doubleClickActivation = false;
|
||||
/// <summary>
|
||||
/// Is a double click required to start editing a cell?
|
||||
/// </summary>
|
||||
public bool DoubleClickActivation
|
||||
{
|
||||
get { return _doubleClickActivation; }
|
||||
set { _doubleClickActivation = value; }
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve the order in which columns appear
|
||||
/// </summary>
|
||||
/// <returns>Current display order of column indices</returns>
|
||||
public int[] GetColumnOrder()
|
||||
{
|
||||
IntPtr lPar = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(int)) * Columns.Count);
|
||||
|
||||
IntPtr res = SendMessage(Handle, LVM_GETCOLUMNORDERARRAY, new IntPtr(Columns.Count), lPar);
|
||||
if (res.ToInt32() == 0) // Something went wrong
|
||||
{
|
||||
Marshal.FreeHGlobal(lPar);
|
||||
return null;
|
||||
}
|
||||
|
||||
int [] order = new int[Columns.Count];
|
||||
Marshal.Copy(lPar, order, 0, Columns.Count);
|
||||
|
||||
Marshal.FreeHGlobal(lPar);
|
||||
|
||||
return order;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Find ListViewItem and SubItem Index at position (x,y)
|
||||
/// </summary>
|
||||
/// <param name="x">relative to ListView</param>
|
||||
/// <param name="y">relative to ListView</param>
|
||||
/// <param name="item">Item at position (x,y)</param>
|
||||
/// <returns>SubItem index</returns>
|
||||
public int GetSubItemAt(int x, int y, out ListViewItem item)
|
||||
{
|
||||
item = this.GetItemAt(x, y);
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
int[] order = GetColumnOrder();
|
||||
Rectangle lviBounds;
|
||||
int subItemX;
|
||||
|
||||
lviBounds = item.GetBounds(ItemBoundsPortion.Entire);
|
||||
subItemX = lviBounds.Left;
|
||||
for (int i=0; i<order.Length; i++)
|
||||
{
|
||||
ColumnHeader h = this.Columns[order[i]];
|
||||
if (x < subItemX+h.Width)
|
||||
{
|
||||
return h.Index;
|
||||
}
|
||||
subItemX += h.Width;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Get bounds for a SubItem
|
||||
/// </summary>
|
||||
/// <param name="Item">Target ListViewItem</param>
|
||||
/// <param name="SubItem">Target SubItem index</param>
|
||||
/// <returns>Bounds of SubItem (relative to ListView)</returns>
|
||||
public Rectangle GetSubItemBounds(ListViewItem Item, int SubItem)
|
||||
{
|
||||
int[] order = GetColumnOrder();
|
||||
|
||||
Rectangle subItemRect = Rectangle.Empty;
|
||||
if (SubItem >= order.Length)
|
||||
throw new IndexOutOfRangeException("SubItem "+SubItem+" out of range");
|
||||
|
||||
if (Item == null)
|
||||
throw new ArgumentNullException("Item");
|
||||
|
||||
Rectangle lviBounds = Item.GetBounds(ItemBoundsPortion.Entire);
|
||||
int subItemX = lviBounds.Left;
|
||||
|
||||
ColumnHeader col;
|
||||
int i;
|
||||
for (i=0; i<order.Length; i++)
|
||||
{
|
||||
col = this.Columns[order[i]];
|
||||
if (col.Index == SubItem)
|
||||
break;
|
||||
subItemX += col.Width;
|
||||
}
|
||||
subItemRect = new Rectangle(subItemX, lviBounds.Top, this.Columns[order[i]].Width, lviBounds.Height);
|
||||
return subItemRect;
|
||||
}
|
||||
|
||||
|
||||
protected override void WndProc(ref Message msg)
|
||||
{
|
||||
switch (msg.Msg)
|
||||
{
|
||||
// Look for WM_VSCROLL,WM_HSCROLL or WM_SIZE messages.
|
||||
case WM_VSCROLL:
|
||||
case WM_HSCROLL:
|
||||
case WM_SIZE:
|
||||
EndEditing(false);
|
||||
break;
|
||||
case WM_NOTIFY:
|
||||
// Look for WM_NOTIFY of events that might also change the
|
||||
// editor's position/size: Column reordering or resizing
|
||||
NMHDR h = (NMHDR)Marshal.PtrToStructure(msg.LParam, typeof(NMHDR));
|
||||
if (h.code == HDN_BEGINDRAG ||
|
||||
h.code == HDN_ITEMCHANGINGA ||
|
||||
h.code == HDN_ITEMCHANGINGW)
|
||||
EndEditing(false);
|
||||
break;
|
||||
}
|
||||
|
||||
base.WndProc(ref msg);
|
||||
}
|
||||
|
||||
|
||||
#region Initialize editing depending of DoubleClickActivation property
|
||||
protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseUp(e);
|
||||
|
||||
MouseEventArgs me = (MouseEventArgs)e;
|
||||
if (me.Button == MouseButtons.Right)
|
||||
{
|
||||
/// Right mouse button click function
|
||||
RightClickFunctionSubitemAt(new Point(e.X, e.Y));
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Normal function (=edit item)
|
||||
if (DoubleClickActivation)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
EditSubitemAt(new Point(e.X, e.Y));
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnDoubleClick(EventArgs e)
|
||||
{
|
||||
base.OnDoubleClick (e);
|
||||
|
||||
if (!DoubleClickActivation)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Point pt = this.PointToClient(Cursor.Position);
|
||||
|
||||
EditSubitemAt(pt);
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Fire SubItemClicked
|
||||
///</summary>
|
||||
///<param name="p">Point of click/doubleclick</param>
|
||||
private void EditSubitemAt(Point p)
|
||||
{
|
||||
ListViewItem item;
|
||||
int idx = GetSubItemAt(p.X, p.Y, out item);
|
||||
if (idx >= 0)
|
||||
{
|
||||
OnSubItemClicked(new SubItemEventArgs(item, idx));
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// Fire SubItemRightClicked
|
||||
///</summary>
|
||||
///<param name="p">Point of click/doubleclick</param>
|
||||
private void RightClickFunctionSubitemAt(Point p)
|
||||
{
|
||||
ListViewItem item;
|
||||
int idx = GetSubItemAt(p.X, p.Y, out item);
|
||||
if (idx >= 0)
|
||||
{
|
||||
OnSubItemRightClicked(new SubItemEventArgs(item, idx));
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region In-place editing functions
|
||||
// The control performing the actual editing
|
||||
private Control _editingControl;
|
||||
// The LVI being edited
|
||||
private ListViewItem _editItem;
|
||||
// The SubItem being edited
|
||||
private int _editSubItem;
|
||||
|
||||
protected void OnSubItemBeginEditing(SubItemEventArgs e)
|
||||
{
|
||||
if (SubItemBeginEditing != null) SubItemBeginEditing(this, e);
|
||||
}
|
||||
|
||||
protected void OnSubItemEndEditing(SubItemEndEditingEventArgs e)
|
||||
{
|
||||
if (SubItemEndEditing != null) SubItemEndEditing(this, e);
|
||||
}
|
||||
|
||||
protected void OnSubItemClicked(SubItemEventArgs e)
|
||||
{
|
||||
if (SubItemClicked != null) SubItemClicked(this, e);
|
||||
}
|
||||
|
||||
protected void OnSubItemRightClicked(SubItemEventArgs e)
|
||||
{
|
||||
if (SubItemRightClicked != null) SubItemRightClicked(this, e);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Begin in-place editing of given cell
|
||||
/// </summary>
|
||||
/// <param name="c">Control used as cell editor</param>
|
||||
/// <param name="Item">ListViewItem to edit</param>
|
||||
/// <param name="SubItem">SubItem index to edit</param>
|
||||
public void StartEditing(Control c, ListViewItem Item, int SubItem)
|
||||
{
|
||||
OnSubItemBeginEditing(new SubItemEventArgs(Item, SubItem));
|
||||
|
||||
Rectangle rcSubItem = GetSubItemBounds(Item, SubItem);
|
||||
|
||||
if (rcSubItem.X < 0)
|
||||
{
|
||||
// Left edge of SubItem not visible - adjust rectangle position and width
|
||||
rcSubItem.Width += rcSubItem.X;
|
||||
rcSubItem.X=0;
|
||||
}
|
||||
if (rcSubItem.X+rcSubItem.Width > this.Width)
|
||||
{
|
||||
// Right edge of SubItem not visible - adjust rectangle width
|
||||
rcSubItem.Width = this.Width-rcSubItem.Left;
|
||||
}
|
||||
|
||||
// Subitem bounds are relative to the location of the ListView!
|
||||
rcSubItem.Offset(Left, Top);
|
||||
|
||||
// In case the editing control and the listview are on different parents,
|
||||
// account for different origins
|
||||
Point origin = new Point(0,0);
|
||||
Point lvOrigin = this.Parent.PointToScreen(origin);
|
||||
Point ctlOrigin = c.Parent.PointToScreen(origin);
|
||||
|
||||
rcSubItem.Offset(lvOrigin.X-ctlOrigin.X, lvOrigin.Y-ctlOrigin.Y);
|
||||
|
||||
// Position and show editor
|
||||
c.Bounds = rcSubItem;
|
||||
c.Text = Item.SubItems[SubItem].Text;
|
||||
c.Visible = true;
|
||||
c.BringToFront();
|
||||
c.Focus();
|
||||
|
||||
_editingControl = c;
|
||||
_editingControl.Leave += new EventHandler(_editControl_Leave);
|
||||
_editingControl.KeyPress += new KeyPressEventHandler(_editControl_KeyPress);
|
||||
|
||||
_editItem = Item;
|
||||
_editSubItem = SubItem;
|
||||
}
|
||||
|
||||
|
||||
private void _editControl_Leave(object sender, EventArgs e)
|
||||
{
|
||||
// cell editor losing focus
|
||||
EndEditing(true);
|
||||
}
|
||||
|
||||
private void _editControl_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
|
||||
{
|
||||
switch (e.KeyChar)
|
||||
{
|
||||
case (char)(int)Keys.Escape:
|
||||
{
|
||||
EndEditing(false);
|
||||
break;
|
||||
}
|
||||
|
||||
case (char)(int)Keys.Enter:
|
||||
{
|
||||
EndEditing(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Accept or discard current value of cell editor control
|
||||
/// </summary>
|
||||
/// <param name="AcceptChanges">Use the _editingControl's Text as new SubItem text or discard changes?</param>
|
||||
public void EndEditing(bool AcceptChanges)
|
||||
{
|
||||
if (_editingControl == null)
|
||||
return;
|
||||
|
||||
SubItemEndEditingEventArgs e = new SubItemEndEditingEventArgs(
|
||||
_editItem, // The item being edited
|
||||
_editSubItem, // The subitem index being edited
|
||||
AcceptChanges ?
|
||||
_editingControl.Text : // Use editControl text if changes are accepted
|
||||
_editItem.SubItems[_editSubItem].Text, // or the original subitem's text, if changes are discarded
|
||||
!AcceptChanges // Cancel?
|
||||
);
|
||||
|
||||
OnSubItemEndEditing(e);
|
||||
|
||||
_editItem.SubItems[_editSubItem].Text = e.DisplayText;
|
||||
|
||||
_editingControl.Leave -= new EventHandler(_editControl_Leave);
|
||||
_editingControl.KeyPress -= new KeyPressEventHandler(_editControl_KeyPress);
|
||||
|
||||
_editingControl.Visible = false;
|
||||
|
||||
_editingControl = null;
|
||||
_editItem = null;
|
||||
_editSubItem = -1;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Event Args for SubItemClicked event
|
||||
/// </summary>
|
||||
public class SubItemEventArgs : EventArgs
|
||||
{
|
||||
int subItem = -1; /// Sub-item index
|
||||
ListViewItem item = null;
|
||||
|
||||
public int SubItem { get { return subItem; } }
|
||||
public ListViewItem Item { get { return item; } }
|
||||
|
||||
public SubItemEventArgs(ListViewItem item, int subItem)
|
||||
{
|
||||
this.subItem = subItem;
|
||||
this.item = item;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Event Args for SubItemEndEditingClicked event
|
||||
/// </summary>
|
||||
public class SubItemEndEditingEventArgs : SubItemEventArgs
|
||||
{
|
||||
string displayText = string.Empty;
|
||||
bool cancel = true;
|
||||
|
||||
public SubItemEndEditingEventArgs(ListViewItem item, int subItem, string displayText, bool cancel) :
|
||||
base(item, subItem)
|
||||
{
|
||||
this.displayText = displayText;
|
||||
this.cancel = cancel;
|
||||
}
|
||||
public string DisplayText
|
||||
{
|
||||
get { return displayText; }
|
||||
set { displayText = value; }
|
||||
}
|
||||
public bool Cancel
|
||||
{
|
||||
get { return cancel; }
|
||||
set { cancel = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<root>
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="ResMimeType">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="Version">
|
||||
<value>1.0.0.0</value>
|
||||
</resheader>
|
||||
<resheader name="Reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3102.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="Writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3102.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,109 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2020 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Common.UIControls
|
||||
{
|
||||
[EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static class ListViewExtensions
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct HDITEM
|
||||
{
|
||||
public Mask mask;
|
||||
public int cxy;
|
||||
[MarshalAs(UnmanagedType.LPTStr)]
|
||||
public string pszText;
|
||||
public IntPtr hbm;
|
||||
public int cchTextMax;
|
||||
public Format fmt;
|
||||
public IntPtr lParam;
|
||||
// _WIN32_IE >= 0x0300
|
||||
public int iImage;
|
||||
public int iOrder;
|
||||
// _WIN32_IE >= 0x0500
|
||||
public uint type;
|
||||
public IntPtr pvFilter;
|
||||
// _WIN32_WINNT >= 0x0600
|
||||
public uint state;
|
||||
|
||||
[Flags]
|
||||
public enum Mask
|
||||
{
|
||||
Format = 0x4, // HDI_FORMAT
|
||||
};
|
||||
|
||||
[Flags]
|
||||
public enum Format
|
||||
{
|
||||
SortDown = 0x200, // HDF_SORTDOWN
|
||||
SortUp = 0x400, // HDF_SORTUP
|
||||
};
|
||||
};
|
||||
|
||||
public const int LVM_FIRST = 0x1000;
|
||||
public const int LVM_GETHEADER = LVM_FIRST + 31;
|
||||
|
||||
public const int HDM_FIRST = 0x1200;
|
||||
public const int HDM_GETITEM = HDM_FIRST + 11;
|
||||
public const int HDM_SETITEM = HDM_FIRST + 12;
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam);
|
||||
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
||||
public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 msg, IntPtr wParam, ref HDITEM lParam);
|
||||
|
||||
public static void SetSortIcon(this ListViewEx listViewControl, int columnIndex, MySortOrder order)
|
||||
{
|
||||
IntPtr columnHeader = SendMessage(listViewControl.Handle, LVM_GETHEADER, IntPtr.Zero, IntPtr.Zero);
|
||||
for (int columnNumber = 0; columnNumber <= listViewControl.Columns.Count - 1; columnNumber++)
|
||||
{
|
||||
var columnPtr = new IntPtr(columnNumber);
|
||||
var item = new HDITEM
|
||||
{
|
||||
mask = HDITEM.Mask.Format
|
||||
};
|
||||
|
||||
if (SendMessage(columnHeader, HDM_GETITEM, columnPtr, ref item) == IntPtr.Zero)
|
||||
{
|
||||
throw new Win32Exception();
|
||||
}
|
||||
|
||||
if (order != MySortOrder.None && columnNumber == columnIndex)
|
||||
{
|
||||
switch (order)
|
||||
{
|
||||
case MySortOrder.Ascending:
|
||||
case MySortOrder.Ascending2:
|
||||
item.fmt &= ~HDITEM.Format.SortDown;
|
||||
item.fmt |= HDITEM.Format.SortUp;
|
||||
break;
|
||||
|
||||
case MySortOrder.Descending:
|
||||
case MySortOrder.Descending2:
|
||||
item.fmt &= ~HDITEM.Format.SortUp;
|
||||
item.fmt |= HDITEM.Format.SortDown;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
item.fmt &= ~HDITEM.Format.SortDown & ~HDITEM.Format.SortUp;
|
||||
}
|
||||
|
||||
if (SendMessage(columnHeader, HDM_SETITEM, columnPtr, ref item) == IntPtr.Zero)
|
||||
{
|
||||
throw new Win32Exception();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -5,7 +5,7 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Common.Forms
|
||||
namespace Common.UIControls
|
||||
{
|
||||
public class LviDateTimeColumnComparer : IComparer
|
||||
{
|
||||
@@ -0,0 +1,34 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Common.UIControls
|
||||
{
|
||||
public class LviIntColumnComparer : IComparer
|
||||
{
|
||||
int column;
|
||||
MySortOrder order;
|
||||
|
||||
public LviIntColumnComparer()
|
||||
{
|
||||
column = 0;
|
||||
order = MySortOrder.Ascending;
|
||||
}
|
||||
|
||||
public LviIntColumnComparer(int column, MySortOrder order)
|
||||
{
|
||||
this.column = column;
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
int valX = int.Parse(((ListViewItem)x).SubItems[column].Text);
|
||||
int valY = int.Parse(((ListViewItem)y).SubItems[column].Text);
|
||||
return (order == MySortOrder.Descending || order == MySortOrder.Descending2) ? (valY - valX) : (valX - valY);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Common.UIControls
|
||||
{
|
||||
public class LviTextColumnComparer : IComparer
|
||||
{
|
||||
private int column;
|
||||
MySortOrder order;
|
||||
|
||||
public LviTextColumnComparer()
|
||||
{
|
||||
column = 0;
|
||||
order = MySortOrder.Ascending;
|
||||
}
|
||||
|
||||
public LviTextColumnComparer(int column, MySortOrder order)
|
||||
{
|
||||
this.column = column;
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
public int Compare(object x, object y)
|
||||
{
|
||||
string txtX = ((ListViewItem)x).SubItems[column].Text;
|
||||
string txtY = ((ListViewItem)y).SubItems[column].Text;
|
||||
return (order == MySortOrder.Descending || order == MySortOrder.Descending2) ? String.Compare(txtY, txtX) : String.Compare(txtX, txtY);
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
-15
@@ -2,6 +2,7 @@
|
||||
/// Copyright (c) 2016-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Common
|
||||
{
|
||||
@@ -357,21 +358,21 @@ namespace Common
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsVolume(Unit unit) { return IsQuantity(unit, Quantity.Volume); }
|
||||
public static bool IsFlow(Unit unit) { return IsQuantity(unit, Quantity.Flow); }
|
||||
public static bool IsMass(Unit unit) { return IsQuantity(unit, Quantity.Mass); }
|
||||
public static bool IsTime(Unit unit) { return IsQuantity(unit, Quantity.Time); }
|
||||
public static bool IsTemperature(Unit unit) { return IsQuantity(unit, Quantity.Temperature); }
|
||||
public static bool IsPressure(Unit unit) { return IsQuantity(unit, Quantity.Pressure); }
|
||||
public static bool IsHumidity(Unit unit) { return IsQuantity(unit, Quantity.Humidity); }
|
||||
public static bool IsError(Unit unit) { return IsQuantity(unit, Quantity.Error); }
|
||||
public static bool IsLength(Unit unit) { return IsQuantity(unit, Quantity.Length); }
|
||||
public static bool IsDensity(Unit unit) { return IsQuantity(unit, Quantity.Density); }
|
||||
public static bool IsEnergy(Unit unit) { return IsQuantity(unit, Quantity.Energy); }
|
||||
public static bool IsPulses(Unit unit) { return IsQuantity(unit, Quantity.Pulses); }
|
||||
public static bool IsPulsePerLtr(Unit unit) { return IsQuantity(unit, Quantity.PulsePerLtr); }
|
||||
public static bool IsPulsePerKWh(Unit unit) { return IsQuantity(unit, Quantity.PulsePerKWh); }
|
||||
public static bool IsConductivity(Unit unit) { return IsQuantity(unit, Quantity.Conductivity); }
|
||||
public static bool IsVolume(Unit units) { return IsQuantity(units, Quantity.Volume); }
|
||||
public static bool IsFlow(Unit units) { return IsQuantity(units, Quantity.Flow); }
|
||||
public static bool IsMass(Unit units) { return IsQuantity(units, Quantity.Mass); }
|
||||
public static bool IsTime(Unit units) { return IsQuantity(units, Quantity.Time); }
|
||||
public static bool IsTemperature(Unit units) { return IsQuantity(units, Quantity.Temperature); }
|
||||
public static bool IsPressure(Unit units) { return IsQuantity(units, Quantity.Pressure); }
|
||||
public static bool IsHumidity(Unit units) { return IsQuantity(units, Quantity.Humidity); }
|
||||
public static bool IsError(Unit units) { return IsQuantity(units, Quantity.Error); }
|
||||
public static bool IsLength(Unit units) { return IsQuantity(units, Quantity.Length); }
|
||||
public static bool IsDensity(Unit units) { return IsQuantity(units, Quantity.Density); }
|
||||
public static bool IsEnergy(Unit units) { return IsQuantity(units, Quantity.Energy); }
|
||||
public static bool IsPulses(Unit units) { return IsQuantity(units, Quantity.Pulses); }
|
||||
public static bool IsPulsePerLtr(Unit units) { return IsQuantity(units, Quantity.PulsePerLtr); }
|
||||
public static bool IsPulsePerKWh(Unit units) { return IsQuantity(units, Quantity.PulsePerKWh); }
|
||||
public static bool IsConductivity(Unit units) { return IsQuantity(units, Quantity.Conductivity); }
|
||||
|
||||
|
||||
|
||||
|
||||
+3
-9
@@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2021-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
|
||||
@@ -14,12 +14,6 @@ namespace Common
|
||||
return string.Format("{0} ({1}/{2})", name, repetitionNr, repeats);
|
||||
}
|
||||
|
||||
public static string ToNiceString(double value, int sigDigits)
|
||||
{
|
||||
string format = SignificantDigitsToFmt(value, sigDigits);
|
||||
return (format == "F0") ? value.ToString("F0") : value.ToString(format).TrimEnd(new char[] { '0' });
|
||||
}
|
||||
|
||||
public static string SignificantDigitsToFmt(double value, int sigDigits)
|
||||
{
|
||||
if (sigDigits == 6)
|
||||
@@ -218,9 +212,9 @@ namespace Common
|
||||
int length = string.IsNullOrEmpty(password) ? 0 : password.Length;
|
||||
|
||||
/// Password length must be at least 6
|
||||
if (length < CurrentUser.MinPasswdLength)
|
||||
if (length < GlobalData.MinPasswdLength)
|
||||
{
|
||||
explanation = string.Format("Password must have at least {0} characters", CurrentUser.MinPasswdLength);
|
||||
explanation = string.Format("Password must have at least {0} characters", GlobalData.MinPasswdLength);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Common;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
@@ -13,9 +12,8 @@ namespace Config.Entities
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual double Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual double Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual Unit FlowUnit { get; set; } /// Not mapped to database, used in UI
|
||||
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual string Selector { get; set; }
|
||||
public virtual string TempMtrUp { get; set; }
|
||||
public virtual string TempMtrDown { get; set; }
|
||||
@@ -28,16 +26,13 @@ namespace Config.Entities
|
||||
public virtual string ValvesOpen { get; set; }
|
||||
public virtual string ValvesClose { get; set; }
|
||||
|
||||
public virtual bool QfromTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool QtoTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public BenchPath()
|
||||
{
|
||||
ValvesOpen = string.Empty;
|
||||
ValvesClose = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public BenchPath(string name, int itemNr)
|
||||
: this()
|
||||
@@ -52,7 +47,6 @@ namespace Config.Entities
|
||||
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.FlowUnit = FlowUnit;
|
||||
result.Selector = Selector;
|
||||
result.TempMtrUp = TempMtrUp;
|
||||
result.TempMtrDown = TempMtrDown;
|
||||
|
||||
@@ -1,21 +1,19 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Common;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class FeedingPath : IHasName, IHasItemNr, IHasValves
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual double Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual double Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual Unit FlowUnit { get; set; } /// Not mapped to database, used in UI
|
||||
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual string Selector { get; set; }
|
||||
public virtual string Pump { get; set; }
|
||||
public virtual string RegVPositions { get; set; } /// Positions of regulation valves in % separated by ';'
|
||||
@@ -24,9 +22,6 @@ namespace Config.Entities
|
||||
public virtual string ValvesOpen { get; set; }
|
||||
public virtual string ValvesClose { get; set; }
|
||||
|
||||
public virtual bool QfromTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool QtoTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public FeedingPath()
|
||||
@@ -48,7 +43,6 @@ namespace Config.Entities
|
||||
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.FlowUnit = FlowUnit;
|
||||
result.Selector = Selector;
|
||||
result.Pump = Pump;
|
||||
result.RegVPositions = RegVPositions;
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class MeasurementCorrection : Common.IMeasurementCorrection, IComparable<MeasurementCorrection>
|
||||
public class MeasurementCorrection : Common.IMeasurementCorrection
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int RangeIx { get; set; } /// 0..5
|
||||
public virtual double Measurement { get; set; }
|
||||
public virtual double Correction { get; set; }
|
||||
public virtual float Measurement { get; set; }
|
||||
public virtual float Correction { get; set; }
|
||||
|
||||
public MeasurementCorrection()
|
||||
{
|
||||
@@ -23,11 +23,6 @@ namespace Config.Entities
|
||||
RangeIx = rangeIx;
|
||||
}
|
||||
|
||||
public virtual int CompareTo(MeasurementCorrection other)
|
||||
{
|
||||
return (Measurement > other.Measurement) ? 1 : ((Measurement == other.Measurement) ? 0 : -1);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Calculates corrected value from a list of corrections by interpolation.
|
||||
@@ -58,9 +53,10 @@ namespace Config.Entities
|
||||
return corrections[0].Correction;
|
||||
}
|
||||
|
||||
for (int i = 1; i < corrections.Count; i++)
|
||||
int count = corrections.Count;
|
||||
for (int i = 1; i < count; i++)
|
||||
{
|
||||
if (rawValue < corrections[i].Measurement)
|
||||
if (rawValue < corrections[0].Measurement)
|
||||
{
|
||||
double d1 = rawValue - corrections[i - 1].Measurement;
|
||||
double d2 = corrections[i].Measurement - rawValue;
|
||||
@@ -79,12 +75,7 @@ namespace Config.Entities
|
||||
}
|
||||
|
||||
/// rawValue is above the highest value in the correction table
|
||||
return corrections[corrections.Count - 1].Correction;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0} {1} ({2})", Measurement, Correction, RangeIx);
|
||||
return corrections[count - 1].Correction;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,23 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2013-2017 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Common;
|
||||
|
||||
namespace Config.Entities
|
||||
{
|
||||
public class OutputPath : IHasName, IHasItemNr, IHasValves
|
||||
{
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual int Id { get; protected set; }
|
||||
public virtual int ItemNr { get; set; }
|
||||
public virtual string Name { get; set; }
|
||||
public virtual string OriName { get; set; } /// Not mapped to database
|
||||
public virtual double Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual double Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual Unit FlowUnit { get; set; } /// Not mapped to database, used in UI
|
||||
public virtual float Qfrom { get; set; } /// Water flow in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow in [m3/h]
|
||||
public virtual string Selector { get; set; }
|
||||
public virtual string RegValve { get; set; }
|
||||
public virtual string FlowMeter { get; set; }
|
||||
public virtual float PidCoef { get; set; } /// PID coefficient for the regulation path
|
||||
public virtual float PidCoef { get; set; } /// PID coefficient for the regulation path
|
||||
public virtual string StartValve { get; set; }
|
||||
public virtual string Diverter { get; set; }
|
||||
public virtual string TempMtrDiv { get; set; }
|
||||
@@ -29,16 +27,13 @@ namespace Config.Entities
|
||||
public virtual string ValvesOpen { get; set; }
|
||||
public virtual string ValvesClose { get; set; }
|
||||
|
||||
public virtual bool QfromTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
public virtual bool QtoTextChngd { get; set; } /// Not mapped to database, used in ProcedureDlg / Metrology1Tab
|
||||
|
||||
/// ------------- Additional stuff not mapped into the database -------------
|
||||
|
||||
public OutputPath()
|
||||
{
|
||||
ValvesOpen = string.Empty;
|
||||
ValvesClose = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
public OutputPath(string name, int itemNr)
|
||||
: this()
|
||||
@@ -54,7 +49,6 @@ namespace Config.Entities
|
||||
result.Name = Name;
|
||||
result.Qfrom = Qfrom;
|
||||
result.Qto = Qto;
|
||||
result.FlowUnit = FlowUnit;
|
||||
result.Selector = Selector;
|
||||
result.RegValve = RegValve;
|
||||
result.FlowMeter = FlowMeter;
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace Config.Entities
|
||||
///
|
||||
/// Default values
|
||||
///
|
||||
CreationUser = Common.CurrentUser.UserName();
|
||||
CreationUser = Common.GlobalData.GetCurrentUserName();
|
||||
CreationTime = DateTime.Now;
|
||||
LastChgUser = CreationUser;
|
||||
LastChgTime = CreationTime;
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Config.Entities
|
||||
///
|
||||
/// Default values
|
||||
///
|
||||
CreationUser = CurrentUser.UserName();
|
||||
CreationUser = GlobalData.GetCurrentUserName();
|
||||
CreationTime = DateTime.Now;
|
||||
LastChgUser = CreationUser;
|
||||
LastChgTime = CreationTime;
|
||||
|
||||
+24
-24
@@ -22,11 +22,11 @@ namespace Config.Entities
|
||||
public virtual TestProfile Profile { get; set; } /// UserDefined, Protected, UserDefinedHeatMeter, ProtectedHeatMeter
|
||||
public virtual sbyte Publish { get; set; } /// 0=no, 1=in all protocols, 2=on screen, 3=internal
|
||||
public virtual bool DoEvaluate { get; set; }
|
||||
public virtual double Qtg { get; set; } /// Target water flow [m3/h]
|
||||
public virtual double Qfrom { get; set; } /// Water flow low limit in [m3/h]
|
||||
public virtual double Qto { get; set; } /// Water flow high limit in [m3/h]
|
||||
public virtual double Volume { get; set; } /// Test volume (target) in [l]
|
||||
public virtual double TestTime { get; set; } /// Test time (estimate) in [s]
|
||||
public virtual float Qtg { get; set; } /// Target water flow [m3/h]
|
||||
public virtual float Qfrom { get; set; } /// Water flow low limit in [m3/h]
|
||||
public virtual float Qto { get; set; } /// Water flow high limit in [m3/h]
|
||||
public virtual float Volume { get; set; } /// Test volume (target) in [l]
|
||||
public virtual float TestTime { get; set; } /// Test time (estimate) in [s]
|
||||
public virtual string Method { get; set; }
|
||||
public virtual float ErrLimLo { get; set; } /// in [%] usually < 0, in case of heat meters: 1=class1, 2=class2, 3=class3
|
||||
public virtual float ErrLimHi { get; set; } /// in [%] usually > 0, in case of heat meters: -Qn in m3/h
|
||||
@@ -34,10 +34,10 @@ namespace Config.Entities
|
||||
public virtual int Repeats { get; set; }
|
||||
public virtual bool DoDraining { get; set; }
|
||||
public virtual bool DoDrainingAfter { get; set; }
|
||||
public virtual bool DoControlWaterTemp { get; set; }
|
||||
public virtual float TempLimLo { get; set; } /// Lower limit for the controlled temperature
|
||||
public virtual float TempLimHi { get; set; } /// Upper limit for the controlled temperature
|
||||
public virtual string TempControl { get; set; } /// Water temperature controller, null or empty = Do not control water temp
|
||||
public virtual float PumpPower { get; set; } /// Power of the pump in [%] in the range 0 .. 100.0f, use values 0% and 100% for non-FM pumps
|
||||
public virtual float PumpPower { get; set; } /// Power of the pump in [%] in the range 0 .. 100.0f, use values 0% and 100% for non-FM pumps
|
||||
public virtual int MassRepeats { get; set; } /// Number of mass. measurements at the beginning/end of test, 0 = default (=5)
|
||||
public virtual float MassSpread { get; set; } /// Max spread of mass. measurements at the beginning/end of test, 0 = default
|
||||
public virtual MassMethod MassMethod { get; set; } /// method of mass. measurement at the beginning/end of test: false=slow (precise), true=using immediate mass measurement and evaluation
|
||||
@@ -90,15 +90,15 @@ namespace Config.Entities
|
||||
Profile = TestProfile.UserDefined;
|
||||
Publish = (sbyte)Common.Publish.Always;
|
||||
DoEvaluate = true;
|
||||
ErrLimLo = -2.0f; /// [%] lower error limit
|
||||
ErrLimHi = 2.0f; /// [%] upper error limit
|
||||
Uncertainty = 0;
|
||||
Repeats = 1;
|
||||
Repeats = 1;
|
||||
DoDraining = false;
|
||||
DoDrainingAfter = false;
|
||||
DoControlWaterTemp = false;
|
||||
TempLimLo = 15.0f;
|
||||
TempLimHi = 25.0f;
|
||||
TempControl = string.Empty;
|
||||
ErrLimLo = -2.0f; /// [%] lower error limit
|
||||
ErrLimHi = 2.0f; /// [%] upper error limit
|
||||
Uncertainty = 0;
|
||||
PumpPower = 60.0f; /// [%]
|
||||
MassRepeats = 0; /// default
|
||||
MassSpread = 0; /// default
|
||||
@@ -168,10 +168,10 @@ namespace Config.Entities
|
||||
result.Repeats = Repeats;
|
||||
result.DoDraining = DoDraining;
|
||||
result.DoDrainingAfter = DoDrainingAfter;
|
||||
result.DoControlWaterTemp = DoControlWaterTemp;
|
||||
result.TempLimLo = TempLimLo;
|
||||
result.TempLimHi = TempLimHi;
|
||||
result.TempControl = TempControl;
|
||||
result.PumpPower = PumpPower;
|
||||
result.PumpPower = PumpPower;
|
||||
result.MassRepeats = MassRepeats;
|
||||
result.MassSpread = MassSpread;
|
||||
result.MassMethod = MassMethod;
|
||||
@@ -221,10 +221,10 @@ namespace Config.Entities
|
||||
output.WriteLine(Repeats.ToString(ci));
|
||||
output.WriteLine(DoDraining.ToString());
|
||||
output.WriteLine(DoDrainingAfter.ToString());
|
||||
output.WriteLine(DoControlWaterTemp.ToString());
|
||||
output.WriteLine(TempLimLo.ToString(ci));
|
||||
output.WriteLine(TempLimHi.ToString(ci));
|
||||
output.WriteLine((TempControl != null) ? TempControl : string.Empty);
|
||||
output.WriteLine(PumpPower.ToString(ci));
|
||||
output.WriteLine(PumpPower.ToString(ci));
|
||||
output.WriteLine(MassRepeats.ToString(ci));
|
||||
output.WriteLine(MassSpread.ToString(ci));
|
||||
output.WriteLine(((byte)MassMethod).ToString(ci));
|
||||
@@ -261,11 +261,11 @@ namespace Config.Entities
|
||||
tst.Part = int.Parse(input.ReadLine(), ci);
|
||||
tst.Publish = sbyte.Parse(input.ReadLine(), ci);
|
||||
tst.DoEvaluate = bool.Parse(input.ReadLine());
|
||||
tst.Qtg = double.Parse(input.ReadLine(), ci);
|
||||
tst.Qfrom = double.Parse(input.ReadLine(), ci);
|
||||
tst.Qto = double.Parse(input.ReadLine(), ci);
|
||||
tst.Volume = double.Parse(input.ReadLine(), ci);
|
||||
tst.TestTime = double.Parse(input.ReadLine(), ci);
|
||||
tst.Qtg = float.Parse(input.ReadLine(), ci);
|
||||
tst.Qfrom = float.Parse(input.ReadLine(), ci);
|
||||
tst.Qto = float.Parse(input.ReadLine(), ci);
|
||||
tst.Volume = float.Parse(input.ReadLine(), ci);
|
||||
tst.TestTime = float.Parse(input.ReadLine(), ci);
|
||||
tst.Method = input.ReadLine();
|
||||
tst.ErrLimLo = float.Parse(input.ReadLine(), ci);
|
||||
tst.ErrLimHi = float.Parse(input.ReadLine(), ci);
|
||||
@@ -273,10 +273,10 @@ namespace Config.Entities
|
||||
tst.Repeats = int.Parse(input.ReadLine(), ci);
|
||||
tst.DoDraining = bool.Parse(input.ReadLine());
|
||||
tst.DoDrainingAfter = bool.Parse(input.ReadLine());
|
||||
tst.DoControlWaterTemp = bool.Parse(input.ReadLine());
|
||||
tst.TempLimLo = float.Parse(input.ReadLine(), ci);
|
||||
tst.TempLimHi = float.Parse(input.ReadLine(), ci);
|
||||
tst.TempControl = input.ReadLine();
|
||||
tst.PumpPower = float.Parse(input.ReadLine(), ci);
|
||||
tst.PumpPower = float.Parse(input.ReadLine(), ci);
|
||||
tst.MassRepeats = int.Parse(input.ReadLine(), ci);
|
||||
tst.MassSpread = float.Parse(input.ReadLine(), ci);
|
||||
tst.MassMethod = (MassMethod)byte.Parse(input.ReadLine(), ci);
|
||||
@@ -336,9 +336,9 @@ namespace Config.Entities
|
||||
ln = inp.ReadLine(); if (ln != Repeats.ToString(ci)) { diff.AppendFormat(fmt, "Repeats", Repeats.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != DoDraining.ToString(ci)) { diff.AppendFormat(fmt, "DoDraining", DoDraining.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != DoDrainingAfter.ToString(ci)) { diff.AppendFormat(fmt, "DoDrainingAfter", DoDrainingAfter.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != DoControlWaterTemp.ToString()) { diff.AppendFormat(fmt, "DoControlWaterTemp", DoControlWaterTemp.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TempLimLo.ToString(ci)) { diff.AppendFormat(fmt, "TempLimLo", TempLimLo.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TempLimHi.ToString(ci)) { diff.AppendFormat(fmt, "TempLimHi", TempLimHi.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != TempControl) { diff.AppendFormat(fmt, "TempController", TempControl, ln); };
|
||||
ln = inp.ReadLine(); if (ln != PumpPower.ToString(ci)) { diff.AppendFormat(fmt, "PumpPower", PumpPower.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != MassRepeats.ToString(ci)) { diff.AppendFormat(fmt, "MassRepeats", MassRepeats.ToString(ci), ln); };
|
||||
ln = inp.ReadLine(); if (ln != MassSpread.ToString(ci)) { diff.AppendFormat(fmt, "MassSpread", MassSpread.ToString(ci), ln); };
|
||||
|
||||
@@ -157,14 +157,14 @@ namespace Config.Entities
|
||||
/// <returns></ returns>
|
||||
public virtual bool IsPasswordExpired()
|
||||
{
|
||||
if (IsPowerUser() || IsMemberOf(GID.Administrators) || CurrentUser.PasswdExpirationPeriodDays == 0)
|
||||
if (IsPowerUser() || IsMemberOf(GID.Administrators) || GlobalData.PasswdExpirationPeriodDays == 0)
|
||||
{
|
||||
/// Password cannot expirate for this user or this feature is disabled in Backup and Security options
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Password expiration time is 3 months
|
||||
return (DateTime.Now - LastPwChange > new TimeSpan(CurrentUser.PasswdExpirationPeriodDays, 0, 0, 0));
|
||||
return (DateTime.Now - LastPwChange > new TimeSpan(GlobalData.PasswdExpirationPeriodDays, 0, 0, 0));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -28,13 +28,13 @@ namespace Config
|
||||
switch (dbType)
|
||||
{
|
||||
default:
|
||||
case DBType.SQLite:
|
||||
cfg = cfg.Database(SQLiteConfiguration.Standard.UsingFile(connectionString));
|
||||
break;
|
||||
case DBType.MySql:
|
||||
cfg = cfg.Database(MySQLConfiguration.Standard.ConnectionString(connectionString));
|
||||
break;
|
||||
case DBType.SQLite:
|
||||
cfg = cfg.Database(SQLiteConfiguration.Standard.UsingFile(connectionString));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (database)
|
||||
{
|
||||
@@ -105,11 +105,11 @@ namespace Config
|
||||
///
|
||||
var admin = new Config.Entities.User
|
||||
{
|
||||
UserName = CurrentUser.AdminUsername,
|
||||
UserName = GlobalData.AdminUsername,
|
||||
FullName = Strings.Administrator,
|
||||
LastPwChange = DateTime.Now
|
||||
};
|
||||
admin.SetPassword(CurrentUser.AdminPassword);
|
||||
admin.SetPassword(GlobalData.AdminPassword);
|
||||
|
||||
///
|
||||
/// Prepare all groups, add some of them to admin
|
||||
|
||||
@@ -25,10 +25,10 @@ namespace Config.Mappings
|
||||
Map(x => x.Repeats);
|
||||
Map(x => x.DoDraining);
|
||||
Map(x => x.DoDrainingAfter);
|
||||
Map(x => x.DoControlWaterTemp);
|
||||
Map(x => x.TempLimLo);
|
||||
Map(x => x.TempLimHi);
|
||||
Map(x => x.TempControl);
|
||||
Map(x => x.PumpPower);
|
||||
Map(x => x.PumpPower);
|
||||
Map(x => x.MassRepeats);
|
||||
Map(x => x.MassSpread);
|
||||
Map(x => x.MassMethod)
|
||||
|
||||
@@ -1,271 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace DataMatrix4Net
|
||||
{
|
||||
public class DataMatrix
|
||||
{
|
||||
///
|
||||
/// Public interface
|
||||
///
|
||||
public bool isContainMatrix { get { return Matrix != null; } }
|
||||
public Gma.QrCodeNet.Encoding.BitMatrix Matrix;
|
||||
|
||||
///
|
||||
/// Internal member variables
|
||||
///
|
||||
readonly SymbolSize chosenSize;
|
||||
readonly bool[,] visited;
|
||||
int width { get { return isContainMatrix ? Matrix.Width : 0; } }
|
||||
int height { get { return isContainMatrix ? Matrix.Height : 0; } }
|
||||
|
||||
/// <summary>
|
||||
/// Data matrix constructor
|
||||
/// Data matrix size up to 26x26 supported, one data region.
|
||||
/// </summary>
|
||||
/// <param name="content">Content of the data matrix (ASCII characters only)</param>
|
||||
/// <param name="symbolSize">Chosen data matrix size</param>
|
||||
public DataMatrix(string content, SymbolSize symbolSize = SymbolSize.SquareAuto)
|
||||
{
|
||||
byte[] contentBytes = Utils.MakeByteArray(content);
|
||||
|
||||
if (symbolSize >= 0)
|
||||
{
|
||||
chosenSize = symbolSize;
|
||||
}
|
||||
else if (symbolSize == SymbolSize.SquareAuto)
|
||||
{
|
||||
for (SymbolSize ss = 0; ss < Symbol.SymbolSquareCount; ss++)
|
||||
{
|
||||
if (contentBytes.Length <= Symbol.GetSymbolAttribute(SymbolAttribute.SymbolDataWords, ss))
|
||||
{
|
||||
chosenSize = ss;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int w = Symbol.GetSymbolAttribute(SymbolAttribute.SymbolCols, chosenSize);
|
||||
int h = Symbol.GetSymbolAttribute(SymbolAttribute.SymbolRows, chosenSize);
|
||||
if (w == -1 || h == -1)
|
||||
{
|
||||
throw new ArgumentOutOfRangeException("symboSize");
|
||||
}
|
||||
|
||||
/// Add padding and Reed-Solomon error correction bytes to the content
|
||||
byte[] data = ReedSolomon.Encode(contentBytes, chosenSize);
|
||||
|
||||
/// Create matrix, fill in frame cells
|
||||
Matrix = new MyBitMatrix(w, h);
|
||||
visited = new bool[w - 2, h - 2];
|
||||
MakeFrame(chosenSize);
|
||||
|
||||
int ix = 0;
|
||||
int x = 0; /// inside data region in the range 0 .. width-2 (x coordinate, frame excluded)
|
||||
int y = 4; /// inside data region in the range 0 .. height-2 (y coordinate, frame excluded)
|
||||
|
||||
/// Walk through the data matrix area and fill in data bytes
|
||||
do
|
||||
{
|
||||
if (x == 0 && y == height - 2)
|
||||
{
|
||||
PlaceByteSpecial1(data[ix++], width, height);
|
||||
}
|
||||
else if (x == 0 && y == height - 4 && (height - 2) % 4 != 0)
|
||||
{
|
||||
PlaceByteSpecial2(data[ix++], width, height);
|
||||
}
|
||||
else if (x == 0 && y == height - 4 && (height - 2) % 8 == 4)
|
||||
{
|
||||
PlaceByteSpecial3(data[ix++], width, height);
|
||||
}
|
||||
else if (x == 2 && y == height + 2 && (height - 2) % 8 == 0)
|
||||
{
|
||||
PlaceByteSpecial4(data[ix++], width, height);
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
if (x >= 0 && y < height - 2 && !visited[x, y])
|
||||
{
|
||||
PlaceByteStandard(data[ix++], x, y, width, height);
|
||||
visited[x, y] = true;
|
||||
}
|
||||
x += 2;
|
||||
y -= 2;
|
||||
}
|
||||
while (x < width - 2 && y >= 0);
|
||||
x += 3;
|
||||
y += 1;
|
||||
|
||||
do
|
||||
{
|
||||
if (x < width - 2 && y >= 0 && !visited[x, y])
|
||||
{
|
||||
PlaceByteStandard(data[ix++], x, y, width, height);
|
||||
visited[x, y] = true;
|
||||
}
|
||||
x -= 2;
|
||||
y += 2;
|
||||
}
|
||||
while (x >= 0 && y < height - 2);
|
||||
x += 1;
|
||||
y += 3;
|
||||
}
|
||||
while (ix < data.Length);
|
||||
}
|
||||
|
||||
/// All matrix sizes
|
||||
void PlaceByteSpecial1(byte dataByte, int width, int height)
|
||||
{
|
||||
Matrix[width - 2, 4] = (dataByte & 0x01) != 0;
|
||||
Matrix[width - 2, 3] = (dataByte & 0x02) != 0;
|
||||
Matrix[width - 2, 2] = (dataByte & 0x04) != 0;
|
||||
Matrix[width - 2, 1] = (dataByte & 0x08) != 0;
|
||||
Matrix[width - 3, 1] = (dataByte & 0x10) != 0;
|
||||
Matrix[3, height - 2] = (dataByte & 0x20) != 0;
|
||||
Matrix[2, height - 2] = (dataByte & 0x40) != 0;
|
||||
Matrix[1, height - 2] = (dataByte & 0x80) != 0;
|
||||
|
||||
visited[width - 3, 3] = true;
|
||||
visited[width - 3, 2] = true;
|
||||
visited[width - 3, 1] = true;
|
||||
visited[width - 3, 0] = true;
|
||||
visited[width - 4, 0] = true;
|
||||
visited[2, height - 3] = true;
|
||||
visited[1, height - 3] = true;
|
||||
visited[0, height - 3] = true;
|
||||
}
|
||||
|
||||
void PlaceByteSpecial2(byte dataByte, int width, int height)
|
||||
{
|
||||
Matrix[width - 2, 2] = (dataByte & 0x01) != 0;
|
||||
Matrix[width - 2, 1] = (dataByte & 0x02) != 0;
|
||||
Matrix[width - 3, 1] = (dataByte & 0x04) != 0;
|
||||
Matrix[width - 4, 1] = (dataByte & 0x08) != 0;
|
||||
Matrix[width - 5, 1] = (dataByte & 0x10) != 0;
|
||||
Matrix[1, height - 2] = (dataByte & 0x20) != 0;
|
||||
Matrix[1, height - 3] = (dataByte & 0x40) != 0;
|
||||
Matrix[1, height - 4] = (dataByte & 0x80) != 0;
|
||||
|
||||
visited[width - 3, 1] = true;
|
||||
visited[width - 3, 0] = true;
|
||||
visited[width - 4, 0] = true;
|
||||
visited[width - 5, 0] = true;
|
||||
visited[width - 6, 0] = true;
|
||||
visited[0, height - 3] = true;
|
||||
visited[0, height - 4] = true;
|
||||
visited[0, height - 5] = true;
|
||||
}
|
||||
|
||||
void PlaceByteSpecial3(byte dataByte, int width, int height)
|
||||
{
|
||||
Matrix[width - 2, 2] = (dataByte & 0x01) != 0;
|
||||
Matrix[width - 3, 2] = (dataByte & 0x02) != 0;
|
||||
Matrix[width - 4, 2] = (dataByte & 0x04) != 0;
|
||||
Matrix[width - 2, 1] = (dataByte & 0x08) != 0;
|
||||
Matrix[width - 3, 1] = (dataByte & 0x10) != 0;
|
||||
Matrix[width - 4, 1] = (dataByte & 0x20) != 0;
|
||||
Matrix[width - 2, height - 2] = (dataByte & 0x40) != 0;
|
||||
Matrix[1, height - 2] = (dataByte & 0x80) != 0;
|
||||
|
||||
visited[width - 3, 1] = true;
|
||||
visited[width - 4, 1] = true;
|
||||
visited[width - 5, 1] = true;
|
||||
visited[width - 3, 0] = true;
|
||||
visited[width - 4, 0] = true;
|
||||
visited[width - 5, 0] = true;
|
||||
visited[width - 3, height - 3] = true;
|
||||
visited[0, height - 3] = true;
|
||||
}
|
||||
|
||||
void PlaceByteSpecial4(byte dataByte, int width, int height)
|
||||
{
|
||||
Matrix[width - 2, 4] = (dataByte & 0x01) != 0;
|
||||
Matrix[width - 2, 3] = (dataByte & 0x02) != 0;
|
||||
Matrix[width - 2, 2] = (dataByte & 0x04) != 0;
|
||||
Matrix[width - 2, 1] = (dataByte & 0x08) != 0;
|
||||
Matrix[width - 3, 1] = (dataByte & 0x10) != 0;
|
||||
Matrix[1, height - 2] = (dataByte & 0x20) != 0;
|
||||
Matrix[1, height - 3] = (dataByte & 0x40) != 0;
|
||||
Matrix[1, height - 4] = (dataByte & 0x80) != 0;
|
||||
|
||||
visited[width - 3, 3] = true;
|
||||
visited[width - 3, 2] = true;
|
||||
visited[width - 3, 1] = true;
|
||||
visited[width - 3, 0] = true;
|
||||
visited[width - 4, 0] = true;
|
||||
visited[0, height - 3] = true;
|
||||
visited[0, height - 4] = true;
|
||||
visited[0, height - 5] = true;
|
||||
}
|
||||
|
||||
///
|
||||
/// Standard bit positioning (all matrix sizes)
|
||||
///
|
||||
int[] xOffs = new int[8] { 1, 0, -1, 1, 0, -1, 0, -1 };
|
||||
int[] yOffs = new int[8] { 1, 1, 1, 0, 0, 0, -1, -1 };
|
||||
|
||||
/// <summary>
|
||||
/// Standard placemnt of a byte into a matrix
|
||||
/// </summary>
|
||||
/// <param name="dataByte">Data byte</param>
|
||||
/// <param name="x">X-coordinate in range 0..width-2 (from left, frame excluded)</param>
|
||||
/// <param name="y">Y-coordinate in range 0..height-2 (from top, frame excluded)</param>
|
||||
/// <param name="width">Matrix width incl. frame</param>
|
||||
/// <param name="height">Matrix height incl. frame</param>
|
||||
void PlaceByteStandard(byte dataByte, int x, int y, int width, int height)
|
||||
{
|
||||
int mask = 1;
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
int xx = x + xOffs[i];
|
||||
int yy = y + yOffs[i];
|
||||
if (xx < 1)
|
||||
{
|
||||
xx += width - 2;
|
||||
yy += 4 - (width + 4) % 8;
|
||||
}
|
||||
else if (yy < 1)
|
||||
{
|
||||
xx += 4 - (height + 4) % 8;
|
||||
yy += height - 2;
|
||||
}
|
||||
Matrix[xx, yy] = (dataByte & mask) != 0;
|
||||
mask = mask << 1;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Crate data matrix frame.
|
||||
/// All square data matrix sizes supported (incl. 4, 16 and 36 data regions).
|
||||
/// </summary>
|
||||
void MakeFrame(SymbolSize size)
|
||||
{
|
||||
int drw = Symbol.GetSymbolAttribute(SymbolAttribute.DataRegionCols, size);
|
||||
int drh = Symbol.GetSymbolAttribute(SymbolAttribute.DataRegionRows, size);
|
||||
int totalhdr = Symbol.GetSymbolAttribute(SymbolAttribute.HorizDataRegions, size);
|
||||
int totalvdr = Symbol.GetSymbolAttribute(SymbolAttribute.VertDataRegions, size);
|
||||
|
||||
for (int hdr = 0; hdr < totalhdr; hdr++)
|
||||
{
|
||||
for (int vdr = 0; vdr < totalvdr; vdr++)
|
||||
{
|
||||
int offsx = hdr * (drw + 2);
|
||||
int offsy = vdr * (drh + 2);
|
||||
|
||||
for (int i = 0; i < drw + 2; i++)
|
||||
{
|
||||
Matrix[offsx + i, offsy + drh + 1] = true;
|
||||
if (i % 2 == 0) Matrix[offsx + i, offsy] = true;
|
||||
}
|
||||
|
||||
for (int j = 0; j < drh + 2; j++)
|
||||
{
|
||||
Matrix[offsx, offsy + j] = true;
|
||||
if (j % 2 == 1) Matrix[offsx + drw + 1, offsy + j] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace DataMatrix4Net
|
||||
{
|
||||
public class MyBitMatrix : Gma.QrCodeNet.Encoding.BitMatrix
|
||||
{
|
||||
///
|
||||
/// Public interface
|
||||
///
|
||||
public override int Width { get { return width; } }
|
||||
public override int Height { get { return height; } }
|
||||
public override bool[,] InternalArray { get { return internalArray; } }
|
||||
///
|
||||
public override bool this[int i, int j]
|
||||
{
|
||||
get { return (i >= 0 && j >= 0 && i < width && j < height) ? internalArray[i, j] : false; }
|
||||
set { if (i >= 0 && j >= 0 && i < width && j < height) internalArray[i, j] = value; }
|
||||
}
|
||||
|
||||
///
|
||||
/// Private members
|
||||
///
|
||||
readonly int width;
|
||||
readonly int height;
|
||||
readonly bool[,] internalArray;
|
||||
|
||||
/// <summary>
|
||||
/// Public constructor
|
||||
/// </summary>
|
||||
/// <param name="width">Matrix width</param>
|
||||
/// <param name="height">Matrix height</param>
|
||||
public MyBitMatrix(int width, int height)
|
||||
{
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
internalArray = new bool[width, height];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,156 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace DataMatrix4Net
|
||||
{
|
||||
public class ReedSolomon
|
||||
{
|
||||
const int NN = 255;
|
||||
const int MAX_ERROR_WORD_COUNT = 68;
|
||||
|
||||
static byte[] log301 = new byte[]
|
||||
{
|
||||
255, 0, 1, 240, 2, 225, 241, 53, 3, 38, 226, 133, 242, 43, 54, 210,
|
||||
4, 195, 39, 114, 227, 106, 134, 28, 243, 140, 44, 23, 55, 118, 211, 234,
|
||||
5, 219, 196, 96, 40, 222, 115, 103, 228, 78, 107, 125, 135, 8, 29, 162,
|
||||
244, 186, 141, 180, 45, 99, 24, 49, 56, 13, 119, 153, 212, 199, 235, 91,
|
||||
6, 76, 220, 217, 197, 11, 97, 184, 41, 36, 223, 253, 116, 138, 104, 193,
|
||||
229, 86, 79, 171, 108, 165, 126, 145, 136, 34, 9, 74, 30, 32, 163, 84,
|
||||
245, 173, 187, 204, 142, 81, 181, 190, 46, 88, 100, 159, 25, 231, 50, 207,
|
||||
57, 147, 14, 67, 120, 128, 154, 248, 213, 167, 200, 63, 236, 110, 92, 176,
|
||||
7, 161, 77, 124, 221, 102, 218, 95, 198, 90, 12, 152, 98, 48, 185, 179,
|
||||
42, 209, 37, 132, 224, 52, 254, 239, 117, 233, 139, 22, 105, 27, 194, 113,
|
||||
230, 206, 87, 158, 80, 189, 172, 203, 109, 175, 166, 62, 127, 247, 146, 66,
|
||||
137, 192, 35, 252, 10, 183, 75, 216, 31, 83, 33, 73, 164, 144, 85, 170,
|
||||
246, 65, 174, 61, 188, 202, 205, 157, 143, 169, 82, 72, 182, 215, 191, 251,
|
||||
47, 178, 89, 151, 101, 94, 160, 123, 26, 112, 232, 21, 51, 238, 208, 131,
|
||||
58, 69, 148, 18, 15, 16, 68, 17, 121, 149, 129, 19, 155, 59, 249, 70,
|
||||
214, 250, 168, 71, 201, 156, 64, 60, 237, 130, 111, 20, 93, 122, 177, 150,
|
||||
};
|
||||
|
||||
static byte[] antilog301 = new byte[]
|
||||
{
|
||||
1, 2, 4, 8, 16, 32, 64, 128, 45, 90, 180, 69, 138, 57, 114, 228,
|
||||
229, 231, 227, 235, 251, 219, 155, 27, 54, 108, 216, 157, 23, 46, 92, 184,
|
||||
93, 186, 89, 178, 73, 146, 9, 18, 36, 72, 144, 13, 26, 52, 104, 208,
|
||||
141, 55, 110, 220, 149, 7, 14, 28, 56, 112, 224, 237, 247, 195, 171, 123,
|
||||
246, 193, 175, 115, 230, 225, 239, 243, 203, 187, 91, 182, 65, 130, 41, 82,
|
||||
164, 101, 202, 185, 95, 190, 81, 162, 105, 210, 137, 63, 126, 252, 213, 135,
|
||||
35, 70, 140, 53, 106, 212, 133, 39, 78, 156, 21, 42, 84, 168, 125, 250,
|
||||
217, 159, 19, 38, 76, 152, 29, 58, 116, 232, 253, 215, 131, 43, 86, 172,
|
||||
117, 234, 249, 223, 147, 11, 22, 44, 88, 176, 77, 154, 25, 50, 100, 200,
|
||||
189, 87, 174, 113, 226, 233, 255, 211, 139, 59, 118, 236, 245, 199, 163, 107,
|
||||
214, 129, 47, 94, 188, 85, 170, 121, 242, 201, 191, 83, 166, 97, 194, 169,
|
||||
127, 254, 209, 143, 51, 102, 204, 181, 71, 142, 49, 98, 196, 165, 103, 206,
|
||||
177, 79, 158, 17, 34, 68, 136, 61, 122, 244, 197, 167, 99, 198, 161, 111,
|
||||
222, 145, 15, 30, 60, 120, 240, 205, 183, 67, 134, 33, 66, 132, 37, 74,
|
||||
148, 5, 10, 20, 40, 80, 160, 109, 218, 153, 31, 62, 124, 248, 221, 151,
|
||||
3, 6, 12, 24, 48, 96, 192, 173, 119, 238, 241, 207, 179, 75, 150, 0,
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// GF add (a + b)
|
||||
/// </summary>
|
||||
static byte GfAdd(byte a, byte b)
|
||||
{
|
||||
return (byte)(a ^ b);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GF multiply (a * b)
|
||||
/// </summary>
|
||||
static byte GfMult(byte a, byte b)
|
||||
{
|
||||
return (a == 0 || b == 0) ? (byte)0 : antilog301[(log301[a] + log301[b]) % NN];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GF multiply by antilog (a * alpha**b)
|
||||
/// </summary>
|
||||
static byte GfMultAntilog(byte a, byte b)
|
||||
{
|
||||
return (a == 0) ? (byte)0 : antilog301[(log301[a] + b) % NN];
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Encode a byte array using Reed-Solomon error correction
|
||||
/// </summary>
|
||||
/// <param name="message">Input byte array</param>
|
||||
/// <param name="sizeId"></param>
|
||||
/// <returns>true when successful</returns>
|
||||
public static byte[] Encode(byte[] message, SymbolSize sizeId)
|
||||
{
|
||||
int blockStride = Symbol.GetSymbolAttribute(SymbolAttribute.InterleavedBlocks, sizeId);
|
||||
int blockErrorWords = Symbol.GetSymbolAttribute(SymbolAttribute.BlockErrorWords, sizeId);
|
||||
int symbolDataWords = Symbol.GetSymbolAttribute(SymbolAttribute.SymbolDataWords, sizeId);
|
||||
int symbolErrorWords = Symbol.GetSymbolAttribute(SymbolAttribute.SymbolErrorWords, sizeId);
|
||||
int symbolTotalWords = symbolDataWords + symbolErrorWords;
|
||||
|
||||
byte[] output = new byte[symbolTotalWords];
|
||||
for (int i = 0; i < Math.Min(message.Length, symbolDataWords); i++)
|
||||
{
|
||||
output[i] = message[i]; /// Copy the original message to output
|
||||
}
|
||||
|
||||
/// Populate generator polynomial
|
||||
byte[] gen = RsGenPoly(blockErrorWords);
|
||||
|
||||
/// For each interleaved block...
|
||||
for (int blockIdx = 0; blockIdx < blockStride; blockIdx++)
|
||||
{
|
||||
/// Generate error codewords
|
||||
byte[] ecc = new byte[blockErrorWords];
|
||||
for (int i = 0; i < blockErrorWords; i++) ecc[i] = 0;
|
||||
|
||||
for (int i = blockIdx; i < symbolDataWords; i += blockStride)
|
||||
{
|
||||
byte val = (byte)(ecc[blockErrorWords - 1] ^ output[i]);
|
||||
|
||||
for (int j = blockErrorWords - 1; j > 0; j--)
|
||||
{
|
||||
//DMTX_CHECK_BOUNDS(&ecc, j); DMTX_CHECK_BOUNDS(&ecc, j-1); DMTX_CHECK_BOUNDS(&gen, j);
|
||||
ecc[j] = GfAdd(ecc[j - 1], GfMult(gen[j], val));
|
||||
}
|
||||
|
||||
ecc[0] = GfMult(gen[0], val);
|
||||
}
|
||||
|
||||
/// Copy to output message
|
||||
int jj = blockErrorWords;
|
||||
for (int i = symbolDataWords + blockIdx; i < symbolTotalWords; i += blockStride)
|
||||
{
|
||||
output[i] = ecc[--jj];
|
||||
}
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
|
||||
static byte[] RsGenPoly(int errorWordCount)
|
||||
{
|
||||
byte[] gen = new byte[errorWordCount];
|
||||
|
||||
/// Initialize all coefficients to 1
|
||||
for (int i = 0; i < errorWordCount; i++) gen[i] = (byte)1;
|
||||
|
||||
/* Generate polynomial */
|
||||
for (int i = 0; i < gen.Length; i++)
|
||||
{
|
||||
for (int j = i; j >= 0; j--)
|
||||
{
|
||||
gen[j] = GfMultAntilog(gen[j], (byte)(i + 1));
|
||||
if (j > 0)
|
||||
{
|
||||
gen[j] = (byte)(gen[j] ^ gen[j - 1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return gen;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace DataMatrix4Net
|
||||
{
|
||||
public enum SymbolSize
|
||||
{
|
||||
RectAuto = -3,
|
||||
SquareAuto = -2,
|
||||
ShapeAuto = -1,
|
||||
|
||||
Sq10x10 = 0,
|
||||
Sq12x12,
|
||||
Sq14x14,
|
||||
Sq16x16,
|
||||
Sq18x18,
|
||||
Sq20x20,
|
||||
Sq22x22,
|
||||
Sq24x24,
|
||||
Sq26x26,
|
||||
Sq32x32,
|
||||
Sq36x36,
|
||||
Sq40x40,
|
||||
Sq44x44,
|
||||
Sq48x48,
|
||||
Sq52x52,
|
||||
Sq64x64,
|
||||
Sq72x72,
|
||||
Sq80x80,
|
||||
Sq88x88,
|
||||
Sq96x96,
|
||||
Sq104x104,
|
||||
Sq120x120,
|
||||
Sq132x132,
|
||||
Sq144x144,
|
||||
|
||||
Rect8x18,
|
||||
Rect8x32,
|
||||
Rect12x26,
|
||||
Rect12x36,
|
||||
Rect16x36,
|
||||
Rect16x48,
|
||||
|
||||
Count
|
||||
}
|
||||
|
||||
public enum SymbolAttribute
|
||||
{
|
||||
SymbolRows,
|
||||
SymbolCols,
|
||||
DataRegionRows,
|
||||
DataRegionCols,
|
||||
HorizDataRegions,
|
||||
VertDataRegions,
|
||||
MappingMatrixRows,
|
||||
MappingMatrixCols,
|
||||
InterleavedBlocks,
|
||||
BlockErrorWords,
|
||||
BlockMaxCorrectable,
|
||||
SymbolDataWords,
|
||||
SymbolErrorWords,
|
||||
SymbolMaxCorrectable,
|
||||
}
|
||||
|
||||
public static class Symbol
|
||||
{
|
||||
public const SymbolSize SymbolSquareCount = SymbolSize.Rect8x18;
|
||||
/// (---------------------------------------------- square ------------------------------------------------------) (--- rectangular ---)
|
||||
static readonly int[] symbolRows = new int[] { 10, 12, 14, 16, 18, 20, 22, 24, 26, 32, 36, 40, 44, 48, 52, 64, 72, 80, 88, 96, 104, 120, 132, 144, 8, 8, 12, 12, 16, 16 };
|
||||
static readonly int[] symbolCols = new int[] { 10, 12, 14, 16, 18, 20, 22, 24, 26, 32, 36, 40, 44, 48, 52, 64, 72, 80, 88, 96, 104, 120, 132, 144, 18, 32, 26, 36, 36, 48 };
|
||||
static readonly int[] dataRegionRows = new int[] { 8, 10, 12, 14, 16, 18, 20, 22, 24, 14, 16, 18, 20, 22, 24, 14, 16, 18, 20, 22, 24, 18, 20, 22, 6, 6, 10, 10, 14, 14 };
|
||||
static readonly int[] dataRegionCols = new int[] { 8, 10, 12, 14, 16, 18, 20, 22, 24, 14, 16, 18, 20, 22, 24, 14, 16, 18, 20, 22, 24, 18, 20, 22, 16, 14, 24, 16, 16, 22 };
|
||||
static readonly int[] horizDataRegions = new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 6, 6, 6, 1, 2, 1, 2, 2, 2 };
|
||||
static readonly int[] interleavedBlocks = new int[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 4, 4, 4, 6, 6, 8, 10, 1, 1, 1, 1, 1, 1 };
|
||||
static readonly int[] symbolDataWords = new int[] { 3, 5, 8, 12, 18, 22, 30, 36, 44, 62, 86, 114, 144, 174, 204, 280, 368, 456, 576, 696, 816, 1050, 1304, 1558, 5, 10, 16, 22, 32, 49 };
|
||||
static readonly int[] blockErrorWords = new int[] { 5, 7, 10, 12, 14, 18, 20, 24, 28, 36, 42, 48, 56, 68, 42, 56, 36, 48, 56, 68, 56, 68, 62, 62, 7, 11, 14, 18, 24, 28 };
|
||||
static readonly int[] blockMaxCorrectable = new int[] { 2, 3, 5, 6, 7, 9, 10, 12, 14, 18, 21, 24, 28, 34, 21, 28, 18, 24, 28, 34, 28, 34, 31, 31, 3, 5, 7, 9, 12, 14 };
|
||||
|
||||
/// <summary>
|
||||
/// Return a symbol attribute
|
||||
/// </summary>
|
||||
/// <param name="attribute">Symbol attribute</param>
|
||||
/// <param name="sizeId">Size ID (or index)</param>
|
||||
/// <returns>Sybol attribute value, -1 when undefined</returns>
|
||||
public static int GetSymbolAttribute(SymbolAttribute attribute, SymbolSize sizeId)
|
||||
{
|
||||
if (sizeId < 0 || sizeId >= SymbolSize.Count) return -1;
|
||||
|
||||
switch (attribute)
|
||||
{
|
||||
case SymbolAttribute.SymbolRows: return symbolRows[(int)sizeId];
|
||||
case SymbolAttribute.SymbolCols: return symbolCols[(int)sizeId];
|
||||
case SymbolAttribute.DataRegionRows: return dataRegionRows[(int)sizeId];
|
||||
case SymbolAttribute.DataRegionCols: return dataRegionCols[(int)sizeId];
|
||||
case SymbolAttribute.HorizDataRegions: return horizDataRegions[(int)sizeId];
|
||||
case SymbolAttribute.VertDataRegions: return (sizeId < SymbolSquareCount) ? horizDataRegions[(int)sizeId] : 1;
|
||||
case SymbolAttribute.MappingMatrixRows: return dataRegionRows[(int)sizeId] * GetSymbolAttribute(SymbolAttribute.VertDataRegions, sizeId);
|
||||
case SymbolAttribute.MappingMatrixCols: return dataRegionCols[(int)sizeId] * horizDataRegions[(int)sizeId];
|
||||
case SymbolAttribute.InterleavedBlocks: return interleavedBlocks[(int)sizeId];
|
||||
case SymbolAttribute.BlockErrorWords: return blockErrorWords[(int)sizeId];
|
||||
case SymbolAttribute.BlockMaxCorrectable: return blockMaxCorrectable[(int)sizeId];
|
||||
case SymbolAttribute.SymbolDataWords: return symbolDataWords[(int)sizeId];
|
||||
case SymbolAttribute.SymbolErrorWords: return blockErrorWords[(int)sizeId] * interleavedBlocks[(int)sizeId];
|
||||
case SymbolAttribute.SymbolMaxCorrectable: return blockMaxCorrectable[(int)sizeId] * interleavedBlocks[(int)sizeId];
|
||||
default: return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace DataMatrix4Net
|
||||
{
|
||||
public static class Utils
|
||||
{
|
||||
const byte EndOfMessage = (byte)129;
|
||||
|
||||
public static bool IsDigit(char znak)
|
||||
{
|
||||
if (znak >= '0' && znak <= '9') return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static bool IsAscii(char znak)
|
||||
{
|
||||
if (znak >= 0 && znak <= '~' + 1) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static byte EncodeTwoDigits(char znak1, char znak2)
|
||||
{
|
||||
return (byte)(130 + 10 * (znak1 - '0') + znak2 - '0');
|
||||
}
|
||||
|
||||
public static byte[] MakeByteArray(string text)
|
||||
{
|
||||
IList<byte> bytes = new List<byte>();
|
||||
|
||||
int ix = 0;
|
||||
while (ix < text.Length)
|
||||
{
|
||||
if (ix < text.Length - 1 && Utils.IsDigit(text[ix]) && Utils.IsDigit(text[ix + 1]))
|
||||
{
|
||||
bytes.Add(Utils.EncodeTwoDigits(text[ix], text[ix + 1]));
|
||||
ix += 2;
|
||||
}
|
||||
else if (Utils.IsAscii(text[ix]))
|
||||
{
|
||||
bytes.Add((byte)(text[ix] + 1));
|
||||
ix++;
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Skip non ASCII characters
|
||||
ix++;
|
||||
}
|
||||
}
|
||||
bytes.Add(EndOfMessage);
|
||||
|
||||
return bytes.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
+15
-32
@@ -423,7 +423,7 @@ namespace DeviceTest
|
||||
{
|
||||
parentCfg = parentFactory.DefaultConfig();
|
||||
}
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg(this);
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
|
||||
cfgForm.CmpntEntities = new List<Config.Entities.Component>();
|
||||
|
||||
IComponentCfgCtrl cfgControl = parentCfg.GetControl(cfgForm.CmpntEntities);
|
||||
@@ -452,7 +452,7 @@ namespace DeviceTest
|
||||
{
|
||||
component1Cfg = component1Factory.DefaultConfig();
|
||||
}
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg(this);
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
|
||||
///
|
||||
var compEntities = new List<Config.Entities.Component>();
|
||||
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
|
||||
@@ -486,7 +486,7 @@ namespace DeviceTest
|
||||
{
|
||||
component2Cfg = component2Factory.DefaultConfig();
|
||||
}
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg(this);
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
|
||||
///
|
||||
var compEntities = new List<Config.Entities.Component>();
|
||||
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
|
||||
@@ -521,7 +521,7 @@ namespace DeviceTest
|
||||
{
|
||||
component3Cfg = component3Factory.DefaultConfig();
|
||||
}
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg(this);
|
||||
ComponentParametersDlg cfgForm = new ComponentParametersDlg();
|
||||
///
|
||||
var compEntities = new List<Config.Entities.Component>();
|
||||
if (parentFactory != null && parentCfg != null) compEntities.Add(parentCfg.CreateDbEntity());
|
||||
@@ -678,16 +678,11 @@ namespace DeviceTest
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.Rig.Network.Camera.Roi.Roi).RoiDetectionOp();
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.Rig.Modbus.TempControl.Easytherm.TControl)
|
||||
else if (tbfComponent1forOp is TBF.Rig.Modbus.Easytherm.Easytherm)
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.Rig.Modbus.TempControl.Easytherm.TControl).SetTemperatureSetpointOp(10);
|
||||
operation2 = (tbfComponent1forOp as TBF.Rig.Modbus.TempControl.Easytherm.TControl).SetTemperatureSetpointOp(20);
|
||||
operation1 = (tbfComponent1forOp as TBF.Rig.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation2 = (tbfComponent1forOp as TBF.Rig.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.Rig.Modbus.TempControl.Novus.TControl)
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.Rig.Modbus.TempControl.Novus.TControl).SetTemperatureSetpointOp(10);
|
||||
operation2 = (tbfComponent1forOp as TBF.Rig.Modbus.TempControl.Novus.TControl).SetTemperatureSetpointOp(20);
|
||||
}
|
||||
else if (tbfComponent1forOp is TBF.Rig.Modbus.UltrasoundLevelMeter.LevelMeter)
|
||||
{
|
||||
operation1 = (tbfComponent1forOp as TBF.Rig.Modbus.UltrasoundLevelMeter.LevelMeter).ReadLevelOp(ref dblBox1);
|
||||
@@ -722,16 +717,11 @@ namespace DeviceTest
|
||||
{
|
||||
operation21 = (tbfComponent2forOp as TBF.Rig.Network.Camera.Roi.Roi).RoiDetectionOp();
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.Rig.Modbus.TempControl.Easytherm.TControl)
|
||||
else if (tbfComponent2forOp is TBF.Rig.Modbus.Easytherm.Easytherm)
|
||||
{
|
||||
operation21 = (tbfComponent2forOp as TBF.Rig.Modbus.TempControl.Easytherm.TControl).SetTemperatureSetpointOp(10);
|
||||
operation22 = (tbfComponent2forOp as TBF.Rig.Modbus.TempControl.Easytherm.TControl).SetTemperatureSetpointOp(20);
|
||||
operation21 = (tbfComponent2forOp as TBF.Rig.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation22 = (tbfComponent2forOp as TBF.Rig.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.Rig.Modbus.TempControl.Novus.TControl)
|
||||
{
|
||||
operation21 = (tbfComponent2forOp as TBF.Rig.Modbus.TempControl.Novus.TControl).SetTemperatureSetpointOp(10);
|
||||
operation22 = (tbfComponent2forOp as TBF.Rig.Modbus.TempControl.Novus.TControl).SetTemperatureSetpointOp(20);
|
||||
}
|
||||
else if (tbfComponent2forOp is TBF.Rig.Modbus.UltrasoundLevelMeter.LevelMeter)
|
||||
{
|
||||
operation21 = (tbfComponent2forOp as TBF.Rig.Modbus.UltrasoundLevelMeter.LevelMeter).ReadLevelOp(ref dblBox1);
|
||||
@@ -766,16 +756,11 @@ namespace DeviceTest
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.Rig.Network.Camera.Roi.Roi).RoiDetectionOp();
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.Rig.Modbus.TempControl.Easytherm.TControl)
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.Rig.Modbus.TempControl.Easytherm.TControl).SetTemperatureSetpointOp(10);
|
||||
operation32 = (tbfComponent3forOp as TBF.Rig.Modbus.TempControl.Easytherm.TControl).SetTemperatureSetpointOp(20);
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.Rig.Modbus.TempControl.Novus.TControl)
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.Rig.Modbus.TempControl.Novus.TControl).SetTemperatureSetpointOp(10);
|
||||
operation32 = (tbfComponent3forOp as TBF.Rig.Modbus.TempControl.Novus.TControl).SetTemperatureSetpointOp(20);
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.Rig.Modbus.Easytherm.Easytherm)
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.Rig.Modbus.Easytherm.Easytherm).SetTemperatureOp(10);
|
||||
operation32 = (tbfComponent3forOp as TBF.Rig.Modbus.Easytherm.Easytherm).SetTemperatureOp(20);
|
||||
}
|
||||
else if (tbfComponent3forOp is TBF.Rig.Modbus.UltrasoundLevelMeter.LevelMeter)
|
||||
{
|
||||
operation31 = (tbfComponent3forOp as TBF.Rig.Modbus.UltrasoundLevelMeter.LevelMeter).ReadLevelOp(ref dblBox1);
|
||||
@@ -899,8 +884,6 @@ namespace DeviceTest
|
||||
{
|
||||
Cursor = Cursors.WaitCursor;
|
||||
|
||||
CurrentUser.Restore(this);
|
||||
|
||||
if (workerThread != null)
|
||||
{
|
||||
workerThreadRunning = false;
|
||||
|
||||
Generated
+2
-2
@@ -35,7 +35,7 @@
|
||||
this.unreadEventsRadioButton = new System.Windows.Forms.RadioButton();
|
||||
this.allEventsRadioButton = new System.Windows.Forms.RadioButton();
|
||||
this.settingsButton = new System.Windows.Forms.Button();
|
||||
this.eventsListView = new Common.Forms.ListViewEx();
|
||||
this.eventsListView = new Common.UIControls.ListViewEx();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
@@ -175,7 +175,7 @@
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.Button settingsButton;
|
||||
private Common.Forms.ListViewEx eventsListView;
|
||||
private Common.UIControls.ListViewEx eventsListView;
|
||||
private System.Windows.Forms.GroupBox eventsSelectionGroupBox;
|
||||
private System.Windows.Forms.RadioButton unreadEventsRadioButton;
|
||||
private System.Windows.Forms.RadioButton allEventsRadioButton;
|
||||
|
||||
@@ -7,7 +7,7 @@ using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using NHibernate;
|
||||
using Common;
|
||||
using Common.Forms;
|
||||
using Common.UIControls;
|
||||
using SharedDatabase;
|
||||
using SharedDatabase.Entities;
|
||||
using EventViewer.Resources;
|
||||
@@ -291,7 +291,7 @@ namespace EventViewer
|
||||
{
|
||||
try
|
||||
{
|
||||
CurrentUser.RemoteUsersDB = new DBSettings(DBType.MySql, Program.LocalSettings.UsersDBConnString);
|
||||
GlobalData.RemoteUsersDB = new DBSettings(DBType.MySql, Program.LocalSettings.UsersDBConnString);
|
||||
SharedDatabase.Forms.LoginDlg dlg = new SharedDatabase.Forms.LoginDlg();
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
|
||||
@@ -4,11 +4,11 @@
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{7CD2B5B4-3304-4151-B8B4-76A8B8AF9B06}</ProjectGuid>
|
||||
<ProjectGuid>{5D9B49E3-CDF9-4A27-80B4-58141D0EB0E0}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>DataMatrix4Net</RootNamespace>
|
||||
<AssemblyName>DataMatrix4Net</AssemblyName>
|
||||
<RootNamespace>Events</RootNamespace>
|
||||
<AssemblyName>Events</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
@@ -21,6 +21,7 @@
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
@@ -29,13 +30,24 @@
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Gma.QrCodeNet.Encoding">
|
||||
<HintPath>..\packages\QrCode.Net.0.4.0.0\net40\Gma.QrCodeNet.Encoding.dll</HintPath>
|
||||
<Reference Include="FluentNHibernate">
|
||||
<HintPath>..\packages\FluentNHibernate.2.0.3.0\lib\net40\FluentNHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections">
|
||||
<HintPath>..\packages\Iesi.Collections.4.0.0.4000\lib\net40\Iesi.Collections.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data">
|
||||
<HintPath>..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate">
|
||||
<HintPath>..\packages\NHibernate.4.0.4.4000\lib\net40\NHibernate.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -43,13 +55,9 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="DataMatrix.cs" />
|
||||
<Compile Include="MyBitMatrix.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="ReedSolomon.cs" />
|
||||
<Compile Include="Symbol.cs" />
|
||||
<Compile Include="Utils.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("DataMatrix4Net")]
|
||||
[assembly: AssemblyTitle("Events")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("DataMatrix4Net")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2021")]
|
||||
[assembly: AssemblyProduct("Events")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("efc81899-2be9-4a5c-a120-667d20c5265f")]
|
||||
[assembly: Guid("3a68150f-6cfc-4f15-a813-cef63bc8bb47")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
+23
-206
@@ -30,46 +30,21 @@
|
||||
{
|
||||
this.rawFileComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.browseButton = new System.Windows.Forms.Button();
|
||||
this.processButton = new System.Windows.Forms.Button();
|
||||
this.resultsTextBox = new System.Windows.Forms.TextBox();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage3 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage4 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage5 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage6 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage8 = new System.Windows.Forms.TabPage();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
|
||||
this.splitContainer3.Panel1.SuspendLayout();
|
||||
this.splitContainer3.Panel2.SuspendLayout();
|
||||
this.splitContainer3.SuspendLayout();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// rawFileComboBox
|
||||
//
|
||||
this.rawFileComboBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.rawFileComboBox.FormattingEnabled = true;
|
||||
this.rawFileComboBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.rawFileComboBox.Location = new System.Drawing.Point(29, 28);
|
||||
this.rawFileComboBox.Name = "rawFileComboBox";
|
||||
this.rawFileComboBox.Size = new System.Drawing.Size(1040, 21);
|
||||
this.rawFileComboBox.Size = new System.Drawing.Size(715, 21);
|
||||
this.rawFileComboBox.TabIndex = 0;
|
||||
//
|
||||
// browseButton
|
||||
//
|
||||
this.browseButton.Location = new System.Drawing.Point(7, 0);
|
||||
this.browseButton.Location = new System.Drawing.Point(769, 19);
|
||||
this.browseButton.Name = "browseButton";
|
||||
this.browseButton.Size = new System.Drawing.Size(66, 37);
|
||||
this.browseButton.TabIndex = 1;
|
||||
@@ -77,184 +52,37 @@
|
||||
this.browseButton.UseVisualStyleBackColor = true;
|
||||
this.browseButton.Click += new System.EventHandler(this.browseButton_Click);
|
||||
//
|
||||
// processButton
|
||||
//
|
||||
this.processButton.Location = new System.Drawing.Point(29, 66);
|
||||
this.processButton.Name = "processButton";
|
||||
this.processButton.Size = new System.Drawing.Size(91, 46);
|
||||
this.processButton.TabIndex = 2;
|
||||
this.processButton.Text = "Process";
|
||||
this.processButton.UseVisualStyleBackColor = true;
|
||||
this.processButton.Click += new System.EventHandler(this.processButton_Click);
|
||||
//
|
||||
// resultsTextBox
|
||||
//
|
||||
this.resultsTextBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.resultsTextBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.resultsTextBox.Location = new System.Drawing.Point(29, 131);
|
||||
this.resultsTextBox.Multiline = true;
|
||||
this.resultsTextBox.Name = "resultsTextBox";
|
||||
this.resultsTextBox.Size = new System.Drawing.Size(1127, 156);
|
||||
this.resultsTextBox.Size = new System.Drawing.Size(715, 181);
|
||||
this.resultsTextBox.TabIndex = 3;
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.tabControl1);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1127, 733);
|
||||
this.splitContainer1.SplitterDistance = 200;
|
||||
this.splitContainer1.TabIndex = 4;
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer2.Name = "splitContainer2";
|
||||
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer2.Panel1
|
||||
//
|
||||
this.splitContainer2.Panel1.Controls.Add(this.splitContainer3);
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.resultsTextBox);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1127, 200);
|
||||
this.splitContainer2.SplitterDistance = 40;
|
||||
this.splitContainer2.TabIndex = 3;
|
||||
//
|
||||
// splitContainer3
|
||||
//
|
||||
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer3.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer3.Name = "splitContainer3";
|
||||
//
|
||||
// splitContainer3.Panel1
|
||||
//
|
||||
this.splitContainer3.Panel1.Controls.Add(this.rawFileComboBox);
|
||||
//
|
||||
// splitContainer3.Panel2
|
||||
//
|
||||
this.splitContainer3.Panel2.Controls.Add(this.browseButton);
|
||||
this.splitContainer3.Size = new System.Drawing.Size(1127, 40);
|
||||
this.splitContainer3.SplitterDistance = 1040;
|
||||
this.splitContainer3.TabIndex = 0;
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Controls.Add(this.tabPage3);
|
||||
this.tabControl1.Controls.Add(this.tabPage4);
|
||||
this.tabControl1.Controls.Add(this.tabPage5);
|
||||
this.tabControl1.Controls.Add(this.tabPage6);
|
||||
this.tabControl1.Controls.Add(this.tabPage7);
|
||||
this.tabControl1.Controls.Add(this.tabPage8);
|
||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(1127, 529);
|
||||
this.tabControl1.TabIndex = 0;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "OffsetV";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "KOhmsR";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage3
|
||||
//
|
||||
this.tabPage3.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage3.Name = "tabPage3";
|
||||
this.tabPage3.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage3.TabIndex = 2;
|
||||
this.tabPage3.Text = "KOhmsC";
|
||||
this.tabPage3.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage4
|
||||
//
|
||||
this.tabPage4.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage4.Name = "tabPage4";
|
||||
this.tabPage4.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage4.TabIndex = 3;
|
||||
this.tabPage4.Text = "DutFlowLph";
|
||||
this.tabPage4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage5
|
||||
//
|
||||
this.tabPage5.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage5.Name = "tabPage5";
|
||||
this.tabPage5.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage5.TabIndex = 4;
|
||||
this.tabPage5.Text = "RefFlowLph";
|
||||
this.tabPage5.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage6
|
||||
//
|
||||
this.tabPage6.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage6.Name = "tabPage6";
|
||||
this.tabPage6.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage6.TabIndex = 5;
|
||||
this.tabPage6.Text = "FlowRatio";
|
||||
this.tabPage6.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage7
|
||||
//
|
||||
this.tabPage7.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage7.Name = "tabPage7";
|
||||
this.tabPage7.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage7.TabIndex = 6;
|
||||
this.tabPage7.Text = "MagField";
|
||||
this.tabPage7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage8
|
||||
//
|
||||
this.tabPage8.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPage8.Name = "tabPage8";
|
||||
this.tabPage8.Size = new System.Drawing.Size(1119, 503);
|
||||
this.tabPage8.TabIndex = 7;
|
||||
this.tabPage8.Text = "EmfV";
|
||||
this.tabPage8.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// CalculatorWnd
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1127, 733);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.ClientSize = new System.Drawing.Size(859, 335);
|
||||
this.Controls.Add(this.resultsTextBox);
|
||||
this.Controls.Add(this.processButton);
|
||||
this.Controls.Add(this.browseButton);
|
||||
this.Controls.Add(this.rawFileComboBox);
|
||||
this.Name = "CalculatorWnd";
|
||||
this.Text = "Feature vector calculator";
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
this.splitContainer3.Panel1.ResumeLayout(false);
|
||||
this.splitContainer3.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
|
||||
this.splitContainer3.ResumeLayout(false);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
@@ -262,19 +90,8 @@
|
||||
|
||||
private System.Windows.Forms.ComboBox rawFileComboBox;
|
||||
private System.Windows.Forms.Button browseButton;
|
||||
private System.Windows.Forms.Button processButton;
|
||||
private System.Windows.Forms.TextBox resultsTextBox;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private System.Windows.Forms.SplitContainer splitContainer3;
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.TabPage tabPage3;
|
||||
private System.Windows.Forms.TabPage tabPage4;
|
||||
private System.Windows.Forms.TabPage tabPage5;
|
||||
private System.Windows.Forms.TabPage tabPage6;
|
||||
private System.Windows.Forms.TabPage tabPage7;
|
||||
private System.Windows.Forms.TabPage tabPage8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,20 +4,13 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
using Common.Iperl;
|
||||
using System.Globalization;
|
||||
using System.Drawing;
|
||||
|
||||
namespace FeatureVectorCalculator
|
||||
{
|
||||
public partial class CalculatorWnd : Form
|
||||
{
|
||||
public const int MaxOptoDataCount = 40000;
|
||||
public const bool Downsample = true;
|
||||
public const bool Extend = true;
|
||||
|
||||
|
||||
OptoTelegramRaw[] optoData;
|
||||
Int64 volumeRawExtLast;
|
||||
Int64 timestampExtLast;
|
||||
@@ -34,115 +27,63 @@ namespace FeatureVectorCalculator
|
||||
}
|
||||
}
|
||||
|
||||
void ClearOutput()
|
||||
{
|
||||
resultsTextBox.Clear();
|
||||
tabControl1.TabPages[0].Controls.Clear();
|
||||
tabControl1.TabPages[1].Controls.Clear();
|
||||
tabControl1.TabPages[2].Controls.Clear();
|
||||
tabControl1.TabPages[3].Controls.Clear();
|
||||
tabControl1.TabPages[4].Controls.Clear();
|
||||
tabControl1.TabPages[5].Controls.Clear();
|
||||
tabControl1.TabPages[6].Controls.Clear();
|
||||
tabControl1.TabPages[7].Controls.Clear();
|
||||
}
|
||||
|
||||
private void browseButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
rawFileComboBox.Text = ofd.FileName;
|
||||
ProcessRawDataFile(ofd.FileName);
|
||||
}
|
||||
var dr = ofd.ShowDialog();
|
||||
rawFileComboBox.Text = ofd.FileName;
|
||||
}
|
||||
|
||||
void ProcessRawDataFile(string fileName)
|
||||
private void processButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (optoData == null) return;
|
||||
|
||||
int counter = 0;
|
||||
int startIx = -1;
|
||||
int endIx = -1;
|
||||
|
||||
ClearOutput();
|
||||
|
||||
resultsTextBox.Text = string.Format("File name: {0}{1}", fileName, Environment.NewLine);
|
||||
|
||||
try
|
||||
using (StreamReader reader = new StreamReader(rawFileComboBox.Text))
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(fileName))
|
||||
string line;
|
||||
while ((line = reader.ReadLine()) != null && counter < MaxOptoDataCount)
|
||||
{
|
||||
string line;
|
||||
while ((line = reader.ReadLine()) != null && counter < MaxOptoDataCount)
|
||||
int ix = line.IndexOf(" :\t");
|
||||
|
||||
if (ix >= 0)
|
||||
{
|
||||
int ix = line.IndexOf(" :\t");
|
||||
string[] items = line.Split('\t');
|
||||
|
||||
if (items.Length > 18)
|
||||
if (optoData[counter].UpdateFromString(line.Substring(ix + 3), counter, 0, ref volumeRawExtLast, ref timestampExtLast, true))
|
||||
{
|
||||
string telegram = string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\r\n",
|
||||
items[2], items[3], items[4], items[5], items[6], items[7], items[8]);
|
||||
|
||||
if (optoData[counter].UpdateFromString(telegram, counter, 0, ref volumeRawExtLast, ref timestampExtLast))
|
||||
if (line.EndsWith("#### start test ####"))
|
||||
{
|
||||
if (line.EndsWith("#### start test ####"))
|
||||
{
|
||||
startIx = counter;
|
||||
optoData[counter].Flags = OptoTelegramFlags.OK_TestStart;
|
||||
}
|
||||
else if (line.EndsWith("#### end of test ####"))
|
||||
{
|
||||
endIx = counter;
|
||||
optoData[counter].Flags = OptoTelegramFlags.OK_TestEnd;
|
||||
}
|
||||
else
|
||||
{
|
||||
optoData[counter].Flags = OptoTelegramFlags.OK;
|
||||
}
|
||||
startIx = counter;
|
||||
optoData[counter].Flags = OptoTelegramFlags.OK_TestStart;
|
||||
}
|
||||
else if (line.EndsWith("#### end of test ####"))
|
||||
{
|
||||
endIx = counter;
|
||||
optoData[counter].Flags = OptoTelegramFlags.OK_TestEnd;
|
||||
}
|
||||
|
||||
optoData[counter].RefFlow = float.Parse(items[15].Replace(',', '.'), CultureInfo.InvariantCulture);
|
||||
}
|
||||
else
|
||||
{
|
||||
optoData[counter].Flags = OptoTelegramFlags.InvalidTelegram;
|
||||
}
|
||||
|
||||
counter++;
|
||||
}
|
||||
else
|
||||
{
|
||||
optoData[counter].Flags = OptoTelegramFlags.InvalidTelegram;
|
||||
}
|
||||
|
||||
reader.Close();
|
||||
counter++;
|
||||
}
|
||||
|
||||
reader.Close();
|
||||
}
|
||||
catch (Exception exc)
|
||||
|
||||
float[] featureVector = new float[9];
|
||||
Common.Utils.CalculateFeatureVector(optoData, counter, startIx, endIx, ref featureVector);
|
||||
|
||||
resultsTextBox.Clear();
|
||||
for (int i = 0; i < 9; i++)
|
||||
{
|
||||
MessageBox.Show(string.Format("Exception: {0}", exc.Message));
|
||||
return;
|
||||
resultsTextBox.Text += string.Format("X{0} = {1}\r\n", i + 1, featureVector[i]);
|
||||
}
|
||||
|
||||
int start = Extend ? 0 : startIx;
|
||||
int end = Extend ? (counter - 1) : endIx;
|
||||
float[] offsetV, kOhmsR, kOhmsC, dutFlow, refFlow, flowRatio, magField, emfV;
|
||||
PointF[] outliers, extendedOutliers;
|
||||
float[] featureVector = Common.StatisticalMetrics.Calculate(optoData, counter, start, end, Downsample,
|
||||
out offsetV, out kOhmsR, out kOhmsC, out dutFlow,
|
||||
out refFlow, out flowRatio, out magField, out emfV,
|
||||
out outliers, out extendedOutliers);
|
||||
|
||||
for (int i = 0; i < Math.Min(9, featureVector.Length); i++)
|
||||
{
|
||||
resultsTextBox.Text += string.Format("X{0} = {1}{2}", i + 1, featureVector[i], Environment.NewLine);
|
||||
}
|
||||
|
||||
float period = Downsample ? 0.5F : 0.125F;
|
||||
if (offsetV != null) tabControl1.TabPages[0].Controls.Add(SignalChart.GetChart(offsetV, period, "OffsetV", "OffsetV [μV]"));
|
||||
if (kOhmsR != null) tabControl1.TabPages[1].Controls.Add(SignalChart.GetChart(kOhmsR, period, "kOhmsR", "kΩ"));
|
||||
if (kOhmsC != null) tabControl1.TabPages[2].Controls.Add(SignalChart.GetChart(kOhmsC, period, "kOhmsC", "kΩ"));
|
||||
if (dutFlow != null) tabControl1.TabPages[3].Controls.Add(SignalChart.GetChart(dutFlow, period, "dutFlow", "L/h"));
|
||||
if (refFlow != null) tabControl1.TabPages[4].Controls.Add(SignalChart.GetChart(refFlow, period, "refFlow", "L/h"));
|
||||
if (flowRatio != null) tabControl1.TabPages[5].Controls.Add(SignalChart.GetChart(flowRatio, period, "flowRatio", "", true, extendedOutliers, outliers));
|
||||
if (magField != null) tabControl1.TabPages[6].Controls.Add(SignalChart.GetChart(magField, period, "magField", "μV", false));
|
||||
if (emfV != null) tabControl1.TabPages[7].Controls.Add(SignalChart.GetChart(emfV, period, "emfV", "μV"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,6 @@
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Windows.Forms.DataVisualization" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
@@ -56,7 +55,6 @@
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="SignalChart.cs" />
|
||||
<EmbeddedResource Include="CalculatorWnd.resx">
|
||||
<DependentUpon>CalculatorWnd.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
|
||||
namespace FeatureVectorCalculator
|
||||
{
|
||||
public class SignalChart
|
||||
{
|
||||
public static Chart GetChart(float[] data, float period, string caption, string captionY, bool fromZero = true,
|
||||
PointF[] extendedOutliers = null, PointF[] outliers = null)
|
||||
{
|
||||
Series series1 = null, series2 = null, series3 = null;
|
||||
|
||||
series1 = new Series { Name = caption, ChartArea = "area1", ChartType = SeriesChartType.Line, Color = Color.DeepSkyBlue };
|
||||
float minY = float.MaxValue;
|
||||
float maxY = float.MinValue;
|
||||
for (int x = 0; x < data.Length; x++)
|
||||
{
|
||||
float y = data[x];
|
||||
if (minY > y) minY = y;
|
||||
if (maxY < y) maxY = y;
|
||||
series1.Points.AddXY(x * period, y);
|
||||
}
|
||||
|
||||
if (extendedOutliers != null)
|
||||
{
|
||||
series2 = new Series { Name = "extended outliers", ChartArea = "area1", ChartType = SeriesChartType.Point, Color = Color.Yellow };
|
||||
for (int i = 0; i < extendedOutliers.Length; i++)
|
||||
{
|
||||
series2.Points.AddXY(extendedOutliers[i].X * period, extendedOutliers[i].Y);
|
||||
}
|
||||
}
|
||||
|
||||
if (outliers != null)
|
||||
{
|
||||
series3 = new Series { Name = "outliers", ChartArea = "area1", ChartType = SeriesChartType.Point, Color = Color.DarkRed };
|
||||
for (int i = 0; i < outliers.Length; i++)
|
||||
{
|
||||
series3.Points.AddXY(outliers[i].X * period, outliers[i].Y);
|
||||
}
|
||||
}
|
||||
|
||||
ChartArea chArea = new ChartArea { Name = "area1" };
|
||||
chArea.AxisX.Title = "Time [s]";
|
||||
chArea.AxisX.IsLogarithmic = false;
|
||||
chArea.AxisX.IsLabelAutoFit = true;
|
||||
chArea.AxisX.Minimum = 0;
|
||||
chArea.AxisX.Maximum = (data.Length - 1) * period;
|
||||
// for (int j = i; j < i + 3; j++)
|
||||
// {
|
||||
// CustomLabel cl = new CustomLabel();
|
||||
// cl.Text = string.Format("{0} {1}", xs[j], flowUnit.ToDescription());
|
||||
// cl.FromPosition = Math.Log10(xs[j] * spacer);
|
||||
// cl.ToPosition = Math.Log10(xs[j] / spacer);
|
||||
// chArea.AxisX.CustomLabels.Add(cl);
|
||||
// }
|
||||
|
||||
chArea.AxisY.Title = captionY;
|
||||
chArea.AxisY.IsLogarithmic = false;
|
||||
chArea.AxisY.IsLabelAutoFit = true;
|
||||
|
||||
if (!fromZero)
|
||||
{
|
||||
/// fromZero = false
|
||||
chArea.AxisY.IsStartedFromZero = false;
|
||||
float diff = maxY - minY;
|
||||
chArea.AxisY.Minimum = minY - 0.05 * diff;
|
||||
chArea.AxisY.Maximum = maxY + 0.05 * diff;
|
||||
}
|
||||
else if (minY >= 0)
|
||||
{
|
||||
/// fromZero = true, All points are above zero
|
||||
chArea.AxisY.IsStartedFromZero = true;
|
||||
chArea.AxisY.Minimum = 0;
|
||||
chArea.AxisY.Maximum = 1.05 * maxY;
|
||||
}
|
||||
else if (maxY <= 0)
|
||||
{
|
||||
/// fromZero = true, All points are below zero
|
||||
chArea.AxisY.IsStartedFromZero = true;
|
||||
chArea.AxisY.Minimum = 1.05 * minY;
|
||||
chArea.AxisY.Maximum = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Points are both below and above zero
|
||||
chArea.AxisY.IsStartedFromZero = false;
|
||||
float diff = maxY - minY;
|
||||
chArea.AxisY.Minimum = minY - 0.05 * diff;
|
||||
chArea.AxisY.Maximum = maxY + 0.05 * diff;
|
||||
}
|
||||
|
||||
if (chArea.AxisY.Maximum == chArea.AxisY.Minimum)
|
||||
{
|
||||
chArea.AxisY.Maximum = chArea.AxisY.Maximum + 1;
|
||||
}
|
||||
|
||||
Chart chart = new Chart { Text = caption, Dock = DockStyle.Fill };
|
||||
chart.ChartAreas.Add(chArea);
|
||||
chart.Series.Add(series1);
|
||||
if (series2 != null) chart.Series.Add(series2);
|
||||
if (series3 != null) chart.Series.Add(series3);
|
||||
|
||||
return chart;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,7 +35,7 @@
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<OldToolsVersion>2.0</OldToolsVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
@@ -76,7 +76,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>full</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
@@ -100,7 +99,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DebugType>none</DebugType>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System">
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace GenericTest
|
||||
{
|
||||
public enum VerifState
|
||||
{
|
||||
Undefined = 0, /// Undefined (only used in OnActivity(..) when start/stop info message is issued)
|
||||
SNisMissing, /// S/N is missing in the parsed record
|
||||
SNisInvalid, /// S/N in the parsed record is invalid
|
||||
NoRefRecordOrNoMatchingWorkflow, /// No record with this S/N in tracing DB or no matching workflow for this record
|
||||
VerificationIsDisabled, /// ...
|
||||
NoVerificationForThisProcess,
|
||||
VerificationPassed, /// Verification of a previous record passed
|
||||
VerificationFailed, /// Verification of a previous record failed, no matching record found
|
||||
TracingDBReadOrWriteFailed,
|
||||
PrintingFailed,
|
||||
}
|
||||
|
||||
public enum ActivityCode
|
||||
{
|
||||
Undefined,
|
||||
StartStop,
|
||||
Passed,
|
||||
Failed,
|
||||
}
|
||||
|
||||
public class ActivityEventArgs : EventArgs
|
||||
{
|
||||
public DateTime TimeStamp;
|
||||
public string SN;
|
||||
public string Message; /// message text
|
||||
public ActivityCode ActivityCode; /// to print an appropriate message
|
||||
public Color Color;
|
||||
public int Interval;
|
||||
public Color FadedColor;
|
||||
|
||||
public ActivityEventArgs(string sn, string message, ActivityCode activityCode, Color color, int interval, Color fadedColor)
|
||||
{
|
||||
TimeStamp = DateTime.Now;
|
||||
this.SN = sn;
|
||||
this.Message = message;
|
||||
this.ActivityCode = activityCode;
|
||||
this.Color = color;
|
||||
this.Interval = interval;
|
||||
this.FadedColor = fadedColor;
|
||||
}
|
||||
}
|
||||
}
|
||||
Generated
-284
@@ -1,284 +0,0 @@
|
||||
namespace GenericTest
|
||||
{
|
||||
partial class GenericTestDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.settingsButton = new System.Windows.Forms.Button();
|
||||
this.stopButton = new System.Windows.Forms.Button();
|
||||
this.horizSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.messageLabel = new System.Windows.Forms.Label();
|
||||
this.vertSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.resultsGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.activityListView = new System.Windows.Forms.ListView();
|
||||
this.logoutButton = new System.Windows.Forms.Button();
|
||||
this.startButton = new System.Windows.Forms.Button();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.filteredSensorValueLabel = new System.Windows.Forms.Label();
|
||||
this.sensorNameLabel = new System.Windows.Forms.Label();
|
||||
this.immediateSensorValueLabel = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.horizSplitContainer)).BeginInit();
|
||||
this.horizSplitContainer.Panel1.SuspendLayout();
|
||||
this.horizSplitContainer.Panel2.SuspendLayout();
|
||||
this.horizSplitContainer.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.vertSplitContainer)).BeginInit();
|
||||
this.vertSplitContainer.Panel1.SuspendLayout();
|
||||
this.vertSplitContainer.Panel2.SuspendLayout();
|
||||
this.vertSplitContainer.SuspendLayout();
|
||||
this.resultsGroupBox.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// settingsButton
|
||||
//
|
||||
this.settingsButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.settingsButton.Location = new System.Drawing.Point(1, 80);
|
||||
this.settingsButton.Name = "settingsButton";
|
||||
this.settingsButton.Size = new System.Drawing.Size(90, 30);
|
||||
this.settingsButton.TabIndex = 0;
|
||||
this.settingsButton.Text = "Settings";
|
||||
this.settingsButton.UseVisualStyleBackColor = true;
|
||||
this.settingsButton.Click += new System.EventHandler(this.settingsButton_Click);
|
||||
//
|
||||
// stopButton
|
||||
//
|
||||
this.stopButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.stopButton.Location = new System.Drawing.Point(1, 44);
|
||||
this.stopButton.Name = "stopButton";
|
||||
this.stopButton.Size = new System.Drawing.Size(90, 30);
|
||||
this.stopButton.TabIndex = 2;
|
||||
this.stopButton.Text = "Stop";
|
||||
this.stopButton.UseVisualStyleBackColor = true;
|
||||
this.stopButton.Click += new System.EventHandler(this.stopButton_Click);
|
||||
//
|
||||
// horizSplitContainer
|
||||
//
|
||||
this.horizSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.horizSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.horizSplitContainer.IsSplitterFixed = true;
|
||||
this.horizSplitContainer.Location = new System.Drawing.Point(0, 0);
|
||||
this.horizSplitContainer.Name = "horizSplitContainer";
|
||||
this.horizSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// horizSplitContainer.Panel1
|
||||
//
|
||||
this.horizSplitContainer.Panel1.Controls.Add(this.messageLabel);
|
||||
this.horizSplitContainer.Panel1MinSize = 55;
|
||||
//
|
||||
// horizSplitContainer.Panel2
|
||||
//
|
||||
this.horizSplitContainer.Panel2.Controls.Add(this.vertSplitContainer);
|
||||
this.horizSplitContainer.Panel2MinSize = 60;
|
||||
this.horizSplitContainer.Size = new System.Drawing.Size(1033, 207);
|
||||
this.horizSplitContainer.SplitterDistance = 55;
|
||||
this.horizSplitContainer.SplitterWidth = 1;
|
||||
this.horizSplitContainer.TabIndex = 2;
|
||||
//
|
||||
// messageLabel
|
||||
//
|
||||
this.messageLabel.AutoSize = true;
|
||||
this.messageLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.messageLabel.Location = new System.Drawing.Point(12, 9);
|
||||
this.messageLabel.Name = "messageLabel";
|
||||
this.messageLabel.Size = new System.Drawing.Size(106, 37);
|
||||
this.messageLabel.TabIndex = 0;
|
||||
this.messageLabel.Text = "label1";
|
||||
//
|
||||
// vertSplitContainer
|
||||
//
|
||||
this.vertSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.vertSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.vertSplitContainer.IsSplitterFixed = true;
|
||||
this.vertSplitContainer.Location = new System.Drawing.Point(0, 0);
|
||||
this.vertSplitContainer.Name = "vertSplitContainer";
|
||||
//
|
||||
// vertSplitContainer.Panel1
|
||||
//
|
||||
this.vertSplitContainer.Panel1.Controls.Add(this.resultsGroupBox);
|
||||
//
|
||||
// vertSplitContainer.Panel2
|
||||
//
|
||||
this.vertSplitContainer.Panel2.Controls.Add(this.logoutButton);
|
||||
this.vertSplitContainer.Panel2.Controls.Add(this.settingsButton);
|
||||
this.vertSplitContainer.Panel2.Controls.Add(this.startButton);
|
||||
this.vertSplitContainer.Panel2.Controls.Add(this.stopButton);
|
||||
this.vertSplitContainer.Size = new System.Drawing.Size(1033, 151);
|
||||
this.vertSplitContainer.SplitterDistance = 945;
|
||||
this.vertSplitContainer.SplitterWidth = 1;
|
||||
this.vertSplitContainer.TabIndex = 2;
|
||||
//
|
||||
// resultsGroupBox
|
||||
//
|
||||
this.resultsGroupBox.Controls.Add(this.activityListView);
|
||||
this.resultsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.resultsGroupBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.resultsGroupBox.Name = "resultsGroupBox";
|
||||
this.resultsGroupBox.Size = new System.Drawing.Size(945, 151);
|
||||
this.resultsGroupBox.TabIndex = 1;
|
||||
this.resultsGroupBox.TabStop = false;
|
||||
this.resultsGroupBox.Text = "Aktivita";
|
||||
//
|
||||
// activityListView
|
||||
//
|
||||
this.activityListView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.activityListView.GridLines = true;
|
||||
this.activityListView.Location = new System.Drawing.Point(3, 16);
|
||||
this.activityListView.Name = "activityListView";
|
||||
this.activityListView.Scrollable = false;
|
||||
this.activityListView.Size = new System.Drawing.Size(939, 132);
|
||||
this.activityListView.TabIndex = 0;
|
||||
this.activityListView.UseCompatibleStateImageBehavior = false;
|
||||
this.activityListView.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// logoutButton
|
||||
//
|
||||
this.logoutButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.logoutButton.Location = new System.Drawing.Point(1, 116);
|
||||
this.logoutButton.Name = "logoutButton";
|
||||
this.logoutButton.Size = new System.Drawing.Size(90, 30);
|
||||
this.logoutButton.TabIndex = 13;
|
||||
this.logoutButton.Text = "Logout";
|
||||
this.logoutButton.UseVisualStyleBackColor = true;
|
||||
this.logoutButton.Click += new System.EventHandler(this.logoutButton_Click);
|
||||
//
|
||||
// startButton
|
||||
//
|
||||
this.startButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.startButton.Location = new System.Drawing.Point(1, 8);
|
||||
this.startButton.Name = "startButton";
|
||||
this.startButton.Size = new System.Drawing.Size(90, 30);
|
||||
this.startButton.TabIndex = 1;
|
||||
this.startButton.Text = "Start";
|
||||
this.startButton.UseVisualStyleBackColor = true;
|
||||
this.startButton.Click += new System.EventHandler(this.startButton_Click);
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer1.IsSplitterFixed = true;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.filteredSensorValueLabel);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.sensorNameLabel);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.immediateSensorValueLabel);
|
||||
this.splitContainer1.Panel1MinSize = 0;
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.horizSplitContainer);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1164, 207);
|
||||
this.splitContainer1.SplitterDistance = 130;
|
||||
this.splitContainer1.SplitterWidth = 1;
|
||||
this.splitContainer1.TabIndex = 3;
|
||||
//
|
||||
// filteredSensorValueLabel
|
||||
//
|
||||
this.filteredSensorValueLabel.AutoSize = true;
|
||||
this.filteredSensorValueLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.filteredSensorValueLabel.Location = new System.Drawing.Point(3, 101);
|
||||
this.filteredSensorValueLabel.Name = "filteredSensorValueLabel";
|
||||
this.filteredSensorValueLabel.Size = new System.Drawing.Size(130, 37);
|
||||
this.filteredSensorValueLabel.TabIndex = 3;
|
||||
this.filteredSensorValueLabel.Text = "60.7 °C";
|
||||
//
|
||||
// sensorNameLabel
|
||||
//
|
||||
this.sensorNameLabel.AutoSize = true;
|
||||
this.sensorNameLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.sensorNameLabel.Location = new System.Drawing.Point(3, 9);
|
||||
this.sensorNameLabel.Name = "sensorNameLabel";
|
||||
this.sensorNameLabel.Size = new System.Drawing.Size(113, 37);
|
||||
this.sensorNameLabel.TabIndex = 2;
|
||||
this.sensorNameLabel.Text = "Temp.";
|
||||
//
|
||||
// immediateSensorValueLabel
|
||||
//
|
||||
this.immediateSensorValueLabel.AutoSize = true;
|
||||
this.immediateSensorValueLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(238)));
|
||||
this.immediateSensorValueLabel.Location = new System.Drawing.Point(3, 55);
|
||||
this.immediateSensorValueLabel.Name = "immediateSensorValueLabel";
|
||||
this.immediateSensorValueLabel.Size = new System.Drawing.Size(130, 37);
|
||||
this.immediateSensorValueLabel.TabIndex = 1;
|
||||
this.immediateSensorValueLabel.Text = "60.7 °C";
|
||||
//
|
||||
// GenericTestDlg
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1164, 207);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "GenericTestDlg";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.Text = "RF Power New / Oracle / Printing";
|
||||
this.TopMost = true;
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.GenericTestDlg_FormClosing);
|
||||
this.Load += new System.EventHandler(this.GenericTestDlg_Load);
|
||||
this.horizSplitContainer.Panel1.ResumeLayout(false);
|
||||
this.horizSplitContainer.Panel1.PerformLayout();
|
||||
this.horizSplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.horizSplitContainer)).EndInit();
|
||||
this.horizSplitContainer.ResumeLayout(false);
|
||||
this.vertSplitContainer.Panel1.ResumeLayout(false);
|
||||
this.vertSplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.vertSplitContainer)).EndInit();
|
||||
this.vertSplitContainer.ResumeLayout(false);
|
||||
this.resultsGroupBox.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.PerformLayout();
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button settingsButton;
|
||||
private System.Windows.Forms.Button stopButton;
|
||||
private System.Windows.Forms.SplitContainer horizSplitContainer;
|
||||
private System.Windows.Forms.Button startButton;
|
||||
private System.Windows.Forms.GroupBox resultsGroupBox;
|
||||
private System.Windows.Forms.SplitContainer vertSplitContainer;
|
||||
private System.Windows.Forms.Label messageLabel;
|
||||
private System.Windows.Forms.ListView activityListView;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.Label immediateSensorValueLabel;
|
||||
private System.Windows.Forms.Label sensorNameLabel;
|
||||
private System.Windows.Forms.Label filteredSensorValueLabel;
|
||||
private System.Windows.Forms.Button logoutButton;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,207 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
using SharedDatabase;
|
||||
|
||||
namespace GenericTest
|
||||
{
|
||||
/// <summary>
|
||||
/// Class to be serialized to an XML file...
|
||||
/// </summary>
|
||||
[XmlRootAttribute("GenericTest")]
|
||||
public class LocalSettings
|
||||
{
|
||||
static XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(LocalSettings) })[0];
|
||||
|
||||
/// Configuration file ecryption/decryption key and initialization vector
|
||||
static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 };
|
||||
static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 };
|
||||
|
||||
|
||||
public string Workplace;
|
||||
public bool IsUserLoginRequired;
|
||||
public string Language;
|
||||
|
||||
public string ConnectionString;
|
||||
public string UsersDBConnString;
|
||||
public string TestResultsFolder;
|
||||
public string ArchiveFolder;
|
||||
public bool DoCheckSNsValidity;
|
||||
public string ValidSNPrefixes;
|
||||
public bool DoCheckPreviousTracingRecords;
|
||||
public bool DoSaveTestResultToOracle;
|
||||
public Mode OracleMode;
|
||||
public bool DoPrintLabels;
|
||||
public bool DoPrintGoodLabelsOnly;
|
||||
public bool MaximizeWindowOnError;
|
||||
|
||||
public bool DoReadSensor;
|
||||
public string SensorName;
|
||||
public int SensorComPortNr;
|
||||
public int SensorAddress;
|
||||
public int SensorFilterTimeMinutes;
|
||||
|
||||
/// MainWnd
|
||||
public bool MainWndMaximized;
|
||||
public int MainWndLeft;
|
||||
public int MainWndTop;
|
||||
public int MainWndWidth;
|
||||
public int MainWndHeight;
|
||||
|
||||
|
||||
public LocalSettings()
|
||||
{
|
||||
}
|
||||
|
||||
public LocalSettings(bool createNew)
|
||||
: this()
|
||||
{
|
||||
if (createNew)
|
||||
{
|
||||
/// Default settings
|
||||
Workplace = GenericTestDlg.DfltWorkplaceName;
|
||||
Language = "en";
|
||||
|
||||
ConnectionString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;";
|
||||
UsersDBConnString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;";
|
||||
TestResultsFolder = "C:\\FTS\\HookSpool\\Filemover";
|
||||
ArchiveFolder = "C:\\FTS\\HookSpool\\Filemover";
|
||||
DoCheckSNsValidity = false;
|
||||
ValidSNPrefixes = "297,298,299,300,301,302";
|
||||
DoCheckPreviousTracingRecords = true;
|
||||
DoSaveTestResultToOracle = false;
|
||||
OracleMode = Mode.Production;
|
||||
DoPrintLabels = true;
|
||||
DoPrintGoodLabelsOnly = false;
|
||||
MaximizeWindowOnError = false;
|
||||
|
||||
MainWndMaximized = false;
|
||||
MainWndWidth = 1000;
|
||||
MainWndHeight = 260;
|
||||
MainWndLeft = 50;
|
||||
MainWndTop = 50;
|
||||
|
||||
DoReadSensor = false;
|
||||
SensorName = "Temp.";
|
||||
SensorComPortNr = 4;
|
||||
SensorAddress = 1;
|
||||
SensorFilterTimeMinutes = 15;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load public fields of this class from the XML file.
|
||||
/// </summary>
|
||||
/// <returns>LocalSettings object or null when Load() fails</returns>
|
||||
public static LocalSettings Load(string fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool isEncrypted = true;
|
||||
using (StreamReader reader = new StreamReader(fileName))
|
||||
{
|
||||
isEncrypted = !reader.ReadLine().StartsWith("<?xml version=");
|
||||
reader.Close();
|
||||
}
|
||||
|
||||
if (isEncrypted)
|
||||
{
|
||||
/// Write settings to a string
|
||||
StringBuilder plain = new StringBuilder();
|
||||
|
||||
using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros })
|
||||
{
|
||||
using (FileStream fsCrypt = new FileStream(fileName, FileMode.Open))
|
||||
{
|
||||
using (ICryptoTransform decryptor = aes.CreateDecryptor(key, IV))
|
||||
{
|
||||
using (CryptoStream cs = new CryptoStream(fsCrypt, decryptor, CryptoStreamMode.Read))
|
||||
{
|
||||
using (MemoryStream mStream = new MemoryStream())
|
||||
{
|
||||
using (var writer = new BinaryWriter(mStream))
|
||||
{
|
||||
int data;
|
||||
while ((data = cs.ReadByte()) != -1)
|
||||
{
|
||||
if (data != 0) writer.Write((byte)data);
|
||||
}
|
||||
writer.Flush();
|
||||
mStream.Position = 0;
|
||||
|
||||
using (var reader = new StreamReader(mStream))
|
||||
{
|
||||
return serializer.Deserialize(reader) as LocalSettings;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(fileName))
|
||||
{
|
||||
return serializer.Deserialize(reader) as LocalSettings;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string msg = e.Message;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save public fields of this class to the XML file.
|
||||
/// </summary>
|
||||
public void Save()
|
||||
{
|
||||
try
|
||||
{
|
||||
/// Encrypt and write to file 'Program.LocalSettingsFileName'
|
||||
using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros })
|
||||
{
|
||||
using (FileStream fsCrypt = new FileStream(Program.LocalSettingsFileName, FileMode.Create))
|
||||
{
|
||||
using (ICryptoTransform encryptor = aes.CreateEncryptor(key, IV))
|
||||
{
|
||||
using (CryptoStream cs = new CryptoStream(fsCrypt, encryptor, CryptoStreamMode.Write))
|
||||
{
|
||||
using (MemoryStream mStream = new MemoryStream())
|
||||
{
|
||||
using (var writer = new StreamWriter(mStream))
|
||||
{
|
||||
/// Serialize and write settings to a memory stream
|
||||
serializer.Serialize(writer, this);
|
||||
writer.Flush();
|
||||
mStream.Position = 0;
|
||||
|
||||
using (var reader = new StreamReader(mStream))
|
||||
{
|
||||
/// Encrypt and write to file 'Program.LocalSettingsFileName'
|
||||
int data;
|
||||
while ((data = mStream.ReadByte()) != -1) cs.WriteByte((byte)data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string msg = e.Message;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,228 +0,0 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Windows.Forms;
|
||||
using log4net;
|
||||
using NHibernate;
|
||||
using Common;
|
||||
using SharedDatabase.Entities;
|
||||
using GenericTest.Resources;
|
||||
|
||||
namespace GenericTest
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// Constants
|
||||
public static GID[] SettingsAccessLevel = new GID[] { GID.TraceabilityManagement }; /// Group membership to access settings
|
||||
public const string ProgramName = "GenericTest";
|
||||
public const string ConfigFName = "config.xml";
|
||||
public const string BackupConfigFName = "config.backup.xml";
|
||||
public const string Log4NetConfigFName = "log4netConfig.xml";
|
||||
|
||||
/// Program information
|
||||
public static readonly string Version; /// version string
|
||||
public static readonly DateTime BuildDateTime; /// date and time of program build
|
||||
public static readonly string ExeDirectory;
|
||||
public static readonly string ConfigDirectory;
|
||||
public static readonly string LogDirectory;
|
||||
public static readonly string LocalSettingsFileName;
|
||||
public static readonly string LocalSettingsBackupName;
|
||||
|
||||
/// Local settings
|
||||
public static LocalSettings LocalSettings;
|
||||
|
||||
/// log4net
|
||||
static ILog log;
|
||||
|
||||
static Program()
|
||||
{
|
||||
/// Program version string
|
||||
Assembly thisAssembly = Assembly.GetExecutingAssembly();
|
||||
Version ver = thisAssembly.GetName().Version;
|
||||
Version = string.Format("{0}.{1}.{2}", ver.Major, ver.Minor, ver.Build);
|
||||
BuildDateTime = new FileInfo(thisAssembly.Location).LastWriteTime;
|
||||
|
||||
/// Local program configuration directory including the trailing backslash
|
||||
ExeDirectory = Path.GetDirectoryName(thisAssembly.Location);
|
||||
ConfigDirectory = Path.Combine(ExeDirectory, "..", "Cfg");
|
||||
LogDirectory = Path.Combine(ExeDirectory, "..", "Logs");
|
||||
LocalSettingsFileName = Path.Combine(ConfigDirectory, ConfigFName);
|
||||
LocalSettingsBackupName = Path.Combine(ConfigDirectory, BackupConfigFName);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
///
|
||||
/// Check if another instance is running
|
||||
///
|
||||
Assembly thisAssembly = Assembly.GetExecutingAssembly();
|
||||
string processName = Path.GetFileNameWithoutExtension(thisAssembly.Location);
|
||||
if (System.Diagnostics.Process.GetProcessesByName(processName).Length > 1)
|
||||
{
|
||||
MessageBox.Show(string.Format("{0}{1}{2}", Strings.Program_GenericTest_is_running_already,
|
||||
Environment.NewLine,
|
||||
Strings.Close_it_please),
|
||||
Strings.Error,
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Asterisk);
|
||||
return;
|
||||
}
|
||||
|
||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
|
||||
|
||||
bool configDirectoryCreated = false;
|
||||
if (!Directory.Exists(ConfigDirectory) || new DirectoryInfo(ConfigDirectory).GetFileSystemInfos().Length == 0)
|
||||
{
|
||||
MessageBox.Show(string.Format("{0}{1}{2}", Strings.Program_is_running_for_the_1st_time_on_this_PC,
|
||||
Environment.NewLine,
|
||||
Strings.Default_settings_are_used),
|
||||
Strings.Warning,
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
///
|
||||
/// Create a new config subdirectory
|
||||
///
|
||||
Directory.CreateDirectory(ConfigDirectory);
|
||||
configDirectoryCreated = true;
|
||||
|
||||
Program.LocalSettings = new LocalSettings(true);
|
||||
Program.LocalSettings.Save();
|
||||
|
||||
if (File.Exists(Path.Combine(ExeDirectory, "SampleConfig", Log4NetConfigFName)))
|
||||
{
|
||||
File.Copy(Path.Combine(ExeDirectory, "SampleConfig", Log4NetConfigFName),
|
||||
Path.Combine(ConfigDirectory, Log4NetConfigFName));
|
||||
}
|
||||
|
||||
File.SetAttributes(Path.Combine(ConfigDirectory, Log4NetConfigFName), FileAttributes.Normal);
|
||||
}
|
||||
|
||||
///
|
||||
/// Configue and start logging
|
||||
///
|
||||
log4net.Config.XmlConfigurator.Configure(new FileInfo(Path.Combine(ConfigDirectory, Log4NetConfigFName)));
|
||||
log = LogManager.GetLogger(typeof(Program));
|
||||
log.Fatal("--------------------------------------------------------------------------------");
|
||||
log.FatalFormat("{0} ver.{1}", ProgramName, Version);
|
||||
log.FatalFormat("Executable directory is {0}", ExeDirectory);
|
||||
if (configDirectoryCreated)
|
||||
{
|
||||
log.Fatal("A new config directory and configuration files created !");
|
||||
}
|
||||
|
||||
///
|
||||
/// Load the local settings
|
||||
///
|
||||
Program.LocalSettings = LocalSettings.Load(Program.LocalSettingsFileName);
|
||||
if (Program.LocalSettings == null)
|
||||
{
|
||||
/// Loading local seetings from regular config file failed. Use the backup
|
||||
Program.LocalSettings = LocalSettings.Load(Program.LocalSettingsBackupName);
|
||||
if (Program.LocalSettings == null)
|
||||
{
|
||||
log.FatalFormat("Local settings: Could not load file {0}, nor {1}.", ConfigFName, BackupConfigFName);
|
||||
log.Fatal("Application terminated.");
|
||||
MessageBox.Show(string.Format("Could not load file {0}, nor {1}.", ConfigFName, BackupConfigFName), "Fatal error");
|
||||
return; /// Fatal error
|
||||
}
|
||||
else
|
||||
{
|
||||
LocalSettings.Save(); /// Save the settings to overwrite the wrong file
|
||||
log.FatalFormat("Local settings: Could not load file {0}, successfully loaded {1}", ConfigFName, BackupConfigFName);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Loading local seetings from the regular config file was successful. Update the backup
|
||||
File.Copy(Program.LocalSettingsFileName, Program.LocalSettingsBackupName, true);
|
||||
}
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
///
|
||||
/// User login
|
||||
///
|
||||
if (LocalSettings.IsUserLoginRequired && !string.IsNullOrEmpty(LocalSettings.UsersDBConnString))
|
||||
{
|
||||
try
|
||||
{
|
||||
CurrentUser.LocalUsersDB = new DBSettings(DBType.MySql, LocalSettings.UsersDBConnString);
|
||||
|
||||
if (new SharedDatabase.Forms.LoginDlg().ShowDialog() != DialogResult.OK) return;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
log.ErrorFormat("Failed to connect to the database of users: {0}", exc.Message);
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
/// Run the WinForm application
|
||||
///
|
||||
try
|
||||
{
|
||||
Application.Run(new GenericTestDlg());
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
if (exc is QuitAppException)
|
||||
{
|
||||
Common.Forms.ModelessForm.CloseForm();
|
||||
log.FatalFormat(Strings.Program_was_not_started_0, exc.Message);
|
||||
MessageBox.Show(exc.Message,
|
||||
Strings.Warning,
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
else
|
||||
{
|
||||
log.FatalFormat("Unhandled exception:{0}{1}Stack trace:{0}{2}", Environment.NewLine, exc.Message, exc.StackTrace);
|
||||
|
||||
MessageBox.Show("Program crashed:" +
|
||||
Environment.NewLine + Environment.NewLine + exc.Message +
|
||||
((exc.InnerException == null) ? string.Empty : (Environment.NewLine + exc.InnerException.Message)) +
|
||||
Environment.NewLine + exc.StackTrace,
|
||||
"Fatal error",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
|
||||
{
|
||||
Exception e = args.ExceptionObject as Exception;
|
||||
if (e == null) return;
|
||||
|
||||
LogException(log, "Unhandled exception", e);
|
||||
|
||||
MessageBox.Show("Program crashed:" +
|
||||
Environment.NewLine + Environment.NewLine + e.Message +
|
||||
((e.InnerException == null) ? string.Empty : (Environment.NewLine + e.InnerException.Message)) +
|
||||
Environment.NewLine + e.StackTrace,
|
||||
"Fatal error",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
}
|
||||
|
||||
static void LogException(ILog log, string description, Exception e)
|
||||
{
|
||||
log.FatalFormat("---------------( {0} )---------------", description);
|
||||
log.FatalFormat("Message : {0}", e.Message);
|
||||
if (e.InnerException != null)
|
||||
{
|
||||
log.FatalFormat("InnerMessage : {0}", e.InnerException.Message);
|
||||
}
|
||||
log.FatalFormat("StackTrace : {0}{1}", Environment.NewLine, e.StackTrace);
|
||||
log.Fatal("--------------------------------------");
|
||||
}
|
||||
}
|
||||
}
|
||||
-63
@@ -1,63 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace GenericTest.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GenericTest.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace GenericTest.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
-333
@@ -1,333 +0,0 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace GenericTest.Resources {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Strings {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Strings() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GenericTest.Resources.Strings", typeof(Strings).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Close it please using 'Task manager'..
|
||||
/// </summary>
|
||||
internal static string Close_it_please {
|
||||
get {
|
||||
return ResourceManager.GetString("Close_it_please", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Date / time.
|
||||
/// </summary>
|
||||
internal static string DateTime {
|
||||
get {
|
||||
return ResourceManager.GetString("DateTime", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Default settings are used..
|
||||
/// </summary>
|
||||
internal static string Default_settings_are_used {
|
||||
get {
|
||||
return ResourceManager.GetString("Default_settings_are_used", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Do you want to change settings?.
|
||||
/// </summary>
|
||||
internal static string Do_you_want_to_change_settings {
|
||||
get {
|
||||
return ResourceManager.GetString("Do_you_want_to_change_settings", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Error.
|
||||
/// </summary>
|
||||
internal static string Error {
|
||||
get {
|
||||
return ResourceManager.GetString("Error", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Logout.
|
||||
/// </summary>
|
||||
internal static string Logout {
|
||||
get {
|
||||
return ResourceManager.GetString("Logout", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Message.
|
||||
/// </summary>
|
||||
internal static string Message {
|
||||
get {
|
||||
return ResourceManager.GetString("Message", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to OK {0}.
|
||||
/// </summary>
|
||||
internal static string OK_0 {
|
||||
get {
|
||||
return ResourceManager.GetString("OK_0", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Opening database failed..
|
||||
/// </summary>
|
||||
internal static string Opening_database_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Opening_database_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Opening folder {0} failed..
|
||||
/// </summary>
|
||||
internal static string Opening_folder_0_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Opening_folder_0_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Previous workflow step is missing or failed.
|
||||
/// </summary>
|
||||
internal static string Previous_workflow_step_is_missing_or_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Previous_workflow_step_is_missing_or_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Printing failed.
|
||||
/// </summary>
|
||||
internal static string Printing_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Printing_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Processing tester results started.
|
||||
/// </summary>
|
||||
internal static string Processing_tester_results_started {
|
||||
get {
|
||||
return ResourceManager.GetString("Processing_tester_results_started", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Processing tester results was stopped.
|
||||
/// </summary>
|
||||
internal static string Processing_tester_results_was_stopped {
|
||||
get {
|
||||
return ResourceManager.GetString("Processing_tester_results_was_stopped", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Program 'GenericTest' is running already..
|
||||
/// </summary>
|
||||
internal static string Program_GenericTest_is_running_already {
|
||||
get {
|
||||
return ResourceManager.GetString("Program_GenericTest_is_running_already", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Program is running for the 1st time on this PC..
|
||||
/// </summary>
|
||||
internal static string Program_is_running_for_the_1st_time_on_this_PC {
|
||||
get {
|
||||
return ResourceManager.GetString("Program_is_running_for_the_1st_time_on_this_PC", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Program was not started: {0}.
|
||||
/// </summary>
|
||||
internal static string Program_was_not_started_0 {
|
||||
get {
|
||||
return ResourceManager.GetString("Program_was_not_started_0", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Reading from Tracing DB failed.
|
||||
/// </summary>
|
||||
internal static string Reading_from_Tracing_DB_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Reading_from_Tracing_DB_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Saving to Oracle DB failed.
|
||||
/// </summary>
|
||||
internal static string Saving_to_Oracle_DB_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Saving_to_Oracle_DB_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Saving to Tracing DB failed.
|
||||
/// </summary>
|
||||
internal static string Saving_to_Tracing_DB_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Saving_to_Tracing_DB_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Serial number.
|
||||
/// </summary>
|
||||
internal static string Serial_number {
|
||||
get {
|
||||
return ResourceManager.GetString("Serial_number", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Serial number is invalid.
|
||||
/// </summary>
|
||||
internal static string Serial_number_is_invalid {
|
||||
get {
|
||||
return ResourceManager.GetString("Serial_number_is_invalid", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Serial number is missing.
|
||||
/// </summary>
|
||||
internal static string Serial_number_is_missing {
|
||||
get {
|
||||
return ResourceManager.GetString("Serial_number_is_missing", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Settings.
|
||||
/// </summary>
|
||||
internal static string Settings {
|
||||
get {
|
||||
return ResourceManager.GetString("Settings", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Something failed.
|
||||
/// </summary>
|
||||
internal static string Something_failed {
|
||||
get {
|
||||
return ResourceManager.GetString("Something_failed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Start.
|
||||
/// </summary>
|
||||
internal static string Start {
|
||||
get {
|
||||
return ResourceManager.GetString("Start", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Stop.
|
||||
/// </summary>
|
||||
internal static string Stop {
|
||||
get {
|
||||
return ResourceManager.GetString("Stop", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Test failed {0}.
|
||||
/// </summary>
|
||||
internal static string Test_failed_0 {
|
||||
get {
|
||||
return ResourceManager.GetString("Test_failed_0", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Time.
|
||||
/// </summary>
|
||||
internal static string Time {
|
||||
get {
|
||||
return ResourceManager.GetString("Time", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Warning.
|
||||
/// </summary>
|
||||
internal static string Warning {
|
||||
get {
|
||||
return ResourceManager.GetString("Warning", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 1.3
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">1.3</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1">this is my long string</data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
[base64 mime encoded serialized .NET Framework object]
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
[base64 mime encoded string representing a byte array form of the .NET Framework object]
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>1.3</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,50 +0,0 @@
|
||||
<log4net>
|
||||
<!-- Program log appenders -->
|
||||
<appender name="GenericTest" type="log4net.Appender.RollingFileAppender">
|
||||
<file value="..\Logs\GenericTest_Log.txt" />
|
||||
<appendToFile value="true" />
|
||||
<rollingMode value="Date" />
|
||||
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<conversionPattern value="%date %-5level %logger - %message%newline" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<!-- Results appenders -->
|
||||
<appender name="Results" type="log4net.Appender.RollingFileAppender">
|
||||
<file value="..\Results\Results.csv" />
|
||||
<appendToFile value="true" />
|
||||
<rollingMode value="Date" />
|
||||
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<conversionPattern value="%date{dd.MM.yy HH:mm:ss} ; %message%newline" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<!-- Results appenders -->
|
||||
<appender name="BadResults" type="log4net.Appender.RollingFileAppender">
|
||||
<file value="..\Results\BadResults.csv" />
|
||||
<appendToFile value="true" />
|
||||
<rollingMode value="Date" />
|
||||
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<conversionPattern value="%date{dd.MM.yy HH:mm:ss} ; %message%newline" />
|
||||
</layout>
|
||||
</appender>
|
||||
|
||||
<!-- Set root logger -->
|
||||
<root> <level value="WARN" /> </root>
|
||||
|
||||
<!-- Set program loggers -->
|
||||
<logger name="TracingDB"> <appender-ref ref="GenericTest" /> <level value="WARN" /> </logger>
|
||||
<logger name="GenericTest"> <appender-ref ref="GenericTest" /> <level value="WARN" /> </logger>
|
||||
<logger name="Results"> <appender-ref ref="Results" /> <level value="INFO" /> </logger>
|
||||
<logger name="BadResults"> <appender-ref ref="BadResults" /> <level value="INFO" /> </logger>
|
||||
|
||||
<!-- Set program logging levels -->
|
||||
<logger name="TracingDB.DB"> <level value="WARN" /> </logger>
|
||||
<logger name="GenericTest.GenericTestDlg"> <level value="WARN" /> </logger>
|
||||
<logger name="GenericTest.GenericTestDlg"> <level value="WARN" /> </logger>
|
||||
<logger name="GenericTest.GenericTestDlg"> <level value="WARN" /> </logger>
|
||||
<logger name="GenericTest.Program"> <level value="WARN" /> </logger>
|
||||
</log4net>
|
||||
Generated
-491
@@ -1,491 +0,0 @@
|
||||
namespace GenericTest
|
||||
{
|
||||
partial class SettingsDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.cancelButton = new System.Windows.Forms.Button();
|
||||
this.connectionStringTextBox = new System.Windows.Forms.TextBox();
|
||||
this.oracleModeComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.workplaceTextBox = new System.Windows.Forms.TextBox();
|
||||
this.archiveFolderTextBox = new System.Windows.Forms.TextBox();
|
||||
this.tracingDBConnStringLabel = new System.Windows.Forms.Label();
|
||||
this.testResultsFolderTextBox = new System.Windows.Forms.TextBox();
|
||||
this.testResultsFolderLabel = new System.Windows.Forms.Label();
|
||||
this.archiveFolderLabel = new System.Windows.Forms.Label();
|
||||
this.oracleModeLabel = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.saveRFTestResultGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.saveTestResultToOracleCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.checkPreviousTracingRecordsCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.usersDBConnStringLabel = new System.Windows.Forms.Label();
|
||||
this.usersDBConnStringTextBox = new System.Windows.Forms.TextBox();
|
||||
this.validSNPrefixesLabel = new System.Windows.Forms.Label();
|
||||
this.validSNPrefixesTextBox = new System.Windows.Forms.TextBox();
|
||||
this.validPcbPrefixesGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.checkSNsValidityCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.printLabelsGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.printGoodLabelsOnlyCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.printLabelsCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.maximizeWindowOnErrorCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.readSensorGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.filterTimeMinLabel = new System.Windows.Forms.Label();
|
||||
this.filterTimeMinTextBox = new System.Windows.Forms.TextBox();
|
||||
this.sensorNameLabel = new System.Windows.Forms.Label();
|
||||
this.sensorNameTextBox = new System.Windows.Forms.TextBox();
|
||||
this.comPortNrLabel = new System.Windows.Forms.Label();
|
||||
this.comPortNrTextBox = new System.Windows.Forms.TextBox();
|
||||
this.addressLabel = new System.Windows.Forms.Label();
|
||||
this.addressTextBox = new System.Windows.Forms.TextBox();
|
||||
this.readSensorCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.loginRequiredCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.saveRFTestResultGroupBox.SuspendLayout();
|
||||
this.validPcbPrefixesGroupBox.SuspendLayout();
|
||||
this.printLabelsGroupBox.SuspendLayout();
|
||||
this.readSensorGroupBox.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okButton.Location = new System.Drawing.Point(688, 383);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(85, 38);
|
||||
this.okButton.TabIndex = 0;
|
||||
this.okButton.Text = "OK";
|
||||
this.okButton.UseVisualStyleBackColor = true;
|
||||
this.okButton.Click += new System.EventHandler(this.okButton_Click);
|
||||
//
|
||||
// cancelButton
|
||||
//
|
||||
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.cancelButton.Location = new System.Drawing.Point(783, 383);
|
||||
this.cancelButton.Name = "cancelButton";
|
||||
this.cancelButton.Size = new System.Drawing.Size(85, 38);
|
||||
this.cancelButton.TabIndex = 1;
|
||||
this.cancelButton.Text = "Cancel";
|
||||
this.cancelButton.UseVisualStyleBackColor = true;
|
||||
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
|
||||
//
|
||||
// connectionStringTextBox
|
||||
//
|
||||
this.connectionStringTextBox.Location = new System.Drawing.Point(158, 56);
|
||||
this.connectionStringTextBox.Name = "connectionStringTextBox";
|
||||
this.connectionStringTextBox.Size = new System.Drawing.Size(708, 20);
|
||||
this.connectionStringTextBox.TabIndex = 5;
|
||||
//
|
||||
// oracleModeComboBox
|
||||
//
|
||||
this.oracleModeComboBox.FormattingEnabled = true;
|
||||
this.oracleModeComboBox.Location = new System.Drawing.Point(163, 22);
|
||||
this.oracleModeComboBox.Name = "oracleModeComboBox";
|
||||
this.oracleModeComboBox.Size = new System.Drawing.Size(190, 21);
|
||||
this.oracleModeComboBox.TabIndex = 1;
|
||||
//
|
||||
// workplaceTextBox
|
||||
//
|
||||
this.workplaceTextBox.Location = new System.Drawing.Point(158, 19);
|
||||
this.workplaceTextBox.Name = "workplaceTextBox";
|
||||
this.workplaceTextBox.Size = new System.Drawing.Size(190, 20);
|
||||
this.workplaceTextBox.TabIndex = 3;
|
||||
//
|
||||
// archiveFolderTextBox
|
||||
//
|
||||
this.archiveFolderTextBox.Location = new System.Drawing.Point(158, 134);
|
||||
this.archiveFolderTextBox.Name = "archiveFolderTextBox";
|
||||
this.archiveFolderTextBox.Size = new System.Drawing.Size(708, 20);
|
||||
this.archiveFolderTextBox.TabIndex = 11;
|
||||
//
|
||||
// tracingDBConnStringLabel
|
||||
//
|
||||
this.tracingDBConnStringLabel.AutoSize = true;
|
||||
this.tracingDBConnStringLabel.Location = new System.Drawing.Point(26, 59);
|
||||
this.tracingDBConnStringLabel.Name = "tracingDBConnStringLabel";
|
||||
this.tracingDBConnStringLabel.Size = new System.Drawing.Size(119, 13);
|
||||
this.tracingDBConnStringLabel.TabIndex = 4;
|
||||
this.tracingDBConnStringLabel.Text = "Tracing DB conn. string";
|
||||
//
|
||||
// testResultsFolderTextBox
|
||||
//
|
||||
this.testResultsFolderTextBox.Location = new System.Drawing.Point(158, 108);
|
||||
this.testResultsFolderTextBox.Name = "testResultsFolderTextBox";
|
||||
this.testResultsFolderTextBox.Size = new System.Drawing.Size(708, 20);
|
||||
this.testResultsFolderTextBox.TabIndex = 9;
|
||||
//
|
||||
// testResultsFolderLabel
|
||||
//
|
||||
this.testResultsFolderLabel.AutoSize = true;
|
||||
this.testResultsFolderLabel.Location = new System.Drawing.Point(26, 111);
|
||||
this.testResultsFolderLabel.Name = "testResultsFolderLabel";
|
||||
this.testResultsFolderLabel.Size = new System.Drawing.Size(88, 13);
|
||||
this.testResultsFolderLabel.TabIndex = 8;
|
||||
this.testResultsFolderLabel.Text = "Test resuts folder";
|
||||
//
|
||||
// archiveFolderLabel
|
||||
//
|
||||
this.archiveFolderLabel.AutoSize = true;
|
||||
this.archiveFolderLabel.Location = new System.Drawing.Point(26, 137);
|
||||
this.archiveFolderLabel.Name = "archiveFolderLabel";
|
||||
this.archiveFolderLabel.Size = new System.Drawing.Size(72, 13);
|
||||
this.archiveFolderLabel.TabIndex = 10;
|
||||
this.archiveFolderLabel.Text = "Archive folder";
|
||||
//
|
||||
// oracleModeLabel
|
||||
//
|
||||
this.oracleModeLabel.AutoSize = true;
|
||||
this.oracleModeLabel.Location = new System.Drawing.Point(31, 25);
|
||||
this.oracleModeLabel.Name = "oracleModeLabel";
|
||||
this.oracleModeLabel.Size = new System.Drawing.Size(101, 13);
|
||||
this.oracleModeLabel.TabIndex = 0;
|
||||
this.oracleModeLabel.Text = "Oracle DB selection";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(26, 22);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(59, 13);
|
||||
this.label6.TabIndex = 2;
|
||||
this.label6.Text = "Workplace";
|
||||
//
|
||||
// saveRFTestResultGroupBox
|
||||
//
|
||||
this.saveRFTestResultGroupBox.Controls.Add(this.saveTestResultToOracleCheckBox);
|
||||
this.saveRFTestResultGroupBox.Controls.Add(this.oracleModeComboBox);
|
||||
this.saveRFTestResultGroupBox.Controls.Add(this.oracleModeLabel);
|
||||
this.saveRFTestResultGroupBox.Location = new System.Drawing.Point(29, 271);
|
||||
this.saveRFTestResultGroupBox.Name = "saveRFTestResultGroupBox";
|
||||
this.saveRFTestResultGroupBox.Size = new System.Drawing.Size(403, 55);
|
||||
this.saveRFTestResultGroupBox.TabIndex = 18;
|
||||
this.saveRFTestResultGroupBox.TabStop = false;
|
||||
//
|
||||
// saveTestResultToOracleCheckBox
|
||||
//
|
||||
this.saveTestResultToOracleCheckBox.AutoSize = true;
|
||||
this.saveTestResultToOracleCheckBox.Location = new System.Drawing.Point(6, 0);
|
||||
this.saveTestResultToOracleCheckBox.Name = "saveTestResultToOracleCheckBox";
|
||||
this.saveTestResultToOracleCheckBox.Size = new System.Drawing.Size(163, 17);
|
||||
this.saveTestResultToOracleCheckBox.TabIndex = 2;
|
||||
this.saveTestResultToOracleCheckBox.Text = "Save test result to Oracle DB";
|
||||
this.saveTestResultToOracleCheckBox.UseVisualStyleBackColor = true;
|
||||
this.saveTestResultToOracleCheckBox.CheckedChanged += new System.EventHandler(this.saveTestResultToOracleCheckBox_CheckedChanged);
|
||||
//
|
||||
// checkPreviousTracingRecordsCheckBox
|
||||
//
|
||||
this.checkPreviousTracingRecordsCheckBox.AutoSize = true;
|
||||
this.checkPreviousTracingRecordsCheckBox.Location = new System.Drawing.Point(35, 241);
|
||||
this.checkPreviousTracingRecordsCheckBox.Name = "checkPreviousTracingRecordsCheckBox";
|
||||
this.checkPreviousTracingRecordsCheckBox.Size = new System.Drawing.Size(173, 17);
|
||||
this.checkPreviousTracingRecordsCheckBox.TabIndex = 16;
|
||||
this.checkPreviousTracingRecordsCheckBox.Text = "Check previous tracing records";
|
||||
this.checkPreviousTracingRecordsCheckBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// usersDBConnStringLabel
|
||||
//
|
||||
this.usersDBConnStringLabel.AutoSize = true;
|
||||
this.usersDBConnStringLabel.Location = new System.Drawing.Point(26, 85);
|
||||
this.usersDBConnStringLabel.Name = "usersDBConnStringLabel";
|
||||
this.usersDBConnStringLabel.Size = new System.Drawing.Size(110, 13);
|
||||
this.usersDBConnStringLabel.TabIndex = 6;
|
||||
this.usersDBConnStringLabel.Text = "Users DB conn. string";
|
||||
//
|
||||
// usersDBConnStringTextBox
|
||||
//
|
||||
this.usersDBConnStringTextBox.Location = new System.Drawing.Point(158, 82);
|
||||
this.usersDBConnStringTextBox.Name = "usersDBConnStringTextBox";
|
||||
this.usersDBConnStringTextBox.Size = new System.Drawing.Size(708, 20);
|
||||
this.usersDBConnStringTextBox.TabIndex = 7;
|
||||
//
|
||||
// validSNPrefixesLabel
|
||||
//
|
||||
this.validSNPrefixesLabel.AutoSize = true;
|
||||
this.validSNPrefixesLabel.Location = new System.Drawing.Point(31, 26);
|
||||
this.validSNPrefixesLabel.Name = "validSNPrefixesLabel";
|
||||
this.validSNPrefixesLabel.Size = new System.Drawing.Size(88, 13);
|
||||
this.validSNPrefixesLabel.TabIndex = 12;
|
||||
this.validSNPrefixesLabel.Text = "Valid s/n prefixes";
|
||||
//
|
||||
// validSNPrefixesTextBox
|
||||
//
|
||||
this.validSNPrefixesTextBox.Location = new System.Drawing.Point(163, 23);
|
||||
this.validSNPrefixesTextBox.Name = "validSNPrefixesTextBox";
|
||||
this.validSNPrefixesTextBox.Size = new System.Drawing.Size(656, 20);
|
||||
this.validSNPrefixesTextBox.TabIndex = 13;
|
||||
//
|
||||
// validPcbPrefixesGroupBox
|
||||
//
|
||||
this.validPcbPrefixesGroupBox.Controls.Add(this.checkSNsValidityCheckBox);
|
||||
this.validPcbPrefixesGroupBox.Controls.Add(this.validSNPrefixesTextBox);
|
||||
this.validPcbPrefixesGroupBox.Controls.Add(this.validSNPrefixesLabel);
|
||||
this.validPcbPrefixesGroupBox.Location = new System.Drawing.Point(29, 170);
|
||||
this.validPcbPrefixesGroupBox.Name = "validPcbPrefixesGroupBox";
|
||||
this.validPcbPrefixesGroupBox.Size = new System.Drawing.Size(837, 58);
|
||||
this.validPcbPrefixesGroupBox.TabIndex = 20;
|
||||
this.validPcbPrefixesGroupBox.TabStop = false;
|
||||
//
|
||||
// checkSNsValidityCheckBox
|
||||
//
|
||||
this.checkSNsValidityCheckBox.AutoSize = true;
|
||||
this.checkSNsValidityCheckBox.Location = new System.Drawing.Point(6, 0);
|
||||
this.checkSNsValidityCheckBox.Name = "checkSNsValidityCheckBox";
|
||||
this.checkSNsValidityCheckBox.Size = new System.Drawing.Size(194, 17);
|
||||
this.checkSNsValidityCheckBox.TabIndex = 14;
|
||||
this.checkSNsValidityCheckBox.Text = "Check if PCB / flowtube s/n is valid";
|
||||
this.checkSNsValidityCheckBox.UseVisualStyleBackColor = true;
|
||||
this.checkSNsValidityCheckBox.CheckedChanged += new System.EventHandler(this.checkSNsValidityCheckBox_CheckedChanged);
|
||||
//
|
||||
// printLabelsGroupBox
|
||||
//
|
||||
this.printLabelsGroupBox.Controls.Add(this.printGoodLabelsOnlyCheckBox);
|
||||
this.printLabelsGroupBox.Controls.Add(this.printLabelsCheckBox);
|
||||
this.printLabelsGroupBox.Location = new System.Drawing.Point(29, 336);
|
||||
this.printLabelsGroupBox.Name = "printLabelsGroupBox";
|
||||
this.printLabelsGroupBox.Size = new System.Drawing.Size(403, 55);
|
||||
this.printLabelsGroupBox.TabIndex = 21;
|
||||
this.printLabelsGroupBox.TabStop = false;
|
||||
//
|
||||
// printGoodLabelsOnlyCheckBox
|
||||
//
|
||||
this.printGoodLabelsOnlyCheckBox.AutoSize = true;
|
||||
this.printGoodLabelsOnlyCheckBox.Location = new System.Drawing.Point(163, 23);
|
||||
this.printGoodLabelsOnlyCheckBox.Name = "printGoodLabelsOnlyCheckBox";
|
||||
this.printGoodLabelsOnlyCheckBox.Size = new System.Drawing.Size(129, 17);
|
||||
this.printGoodLabelsOnlyCheckBox.TabIndex = 22;
|
||||
this.printGoodLabelsOnlyCheckBox.Text = "Print good results only";
|
||||
this.printGoodLabelsOnlyCheckBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// printLabelsCheckBox
|
||||
//
|
||||
this.printLabelsCheckBox.AutoSize = true;
|
||||
this.printLabelsCheckBox.Location = new System.Drawing.Point(6, 0);
|
||||
this.printLabelsCheckBox.Name = "printLabelsCheckBox";
|
||||
this.printLabelsCheckBox.Size = new System.Drawing.Size(80, 17);
|
||||
this.printLabelsCheckBox.TabIndex = 2;
|
||||
this.printLabelsCheckBox.Text = "Print results";
|
||||
this.printLabelsCheckBox.UseVisualStyleBackColor = true;
|
||||
this.printLabelsCheckBox.CheckedChanged += new System.EventHandler(this.printLabelsCheckBox_CheckedChanged);
|
||||
//
|
||||
// maximizeWindowOnErrorCheckBox
|
||||
//
|
||||
this.maximizeWindowOnErrorCheckBox.AutoSize = true;
|
||||
this.maximizeWindowOnErrorCheckBox.Location = new System.Drawing.Point(35, 404);
|
||||
this.maximizeWindowOnErrorCheckBox.Name = "maximizeWindowOnErrorCheckBox";
|
||||
this.maximizeWindowOnErrorCheckBox.Size = new System.Drawing.Size(147, 17);
|
||||
this.maximizeWindowOnErrorCheckBox.TabIndex = 22;
|
||||
this.maximizeWindowOnErrorCheckBox.Text = "Maximize window on error";
|
||||
this.maximizeWindowOnErrorCheckBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// readSensorGroupBox
|
||||
//
|
||||
this.readSensorGroupBox.Controls.Add(this.filterTimeMinLabel);
|
||||
this.readSensorGroupBox.Controls.Add(this.filterTimeMinTextBox);
|
||||
this.readSensorGroupBox.Controls.Add(this.sensorNameLabel);
|
||||
this.readSensorGroupBox.Controls.Add(this.sensorNameTextBox);
|
||||
this.readSensorGroupBox.Controls.Add(this.comPortNrLabel);
|
||||
this.readSensorGroupBox.Controls.Add(this.comPortNrTextBox);
|
||||
this.readSensorGroupBox.Controls.Add(this.addressLabel);
|
||||
this.readSensorGroupBox.Controls.Add(this.addressTextBox);
|
||||
this.readSensorGroupBox.Controls.Add(this.readSensorCheckBox);
|
||||
this.readSensorGroupBox.Location = new System.Drawing.Point(450, 241);
|
||||
this.readSensorGroupBox.Name = "readSensorGroupBox";
|
||||
this.readSensorGroupBox.Size = new System.Drawing.Size(416, 123);
|
||||
this.readSensorGroupBox.TabIndex = 23;
|
||||
this.readSensorGroupBox.TabStop = false;
|
||||
//
|
||||
// filterTimeMinLabel
|
||||
//
|
||||
this.filterTimeMinLabel.AutoSize = true;
|
||||
this.filterTimeMinLabel.Location = new System.Drawing.Point(81, 95);
|
||||
this.filterTimeMinLabel.Name = "filterTimeMinLabel";
|
||||
this.filterTimeMinLabel.Size = new System.Drawing.Size(96, 13);
|
||||
this.filterTimeMinLabel.TabIndex = 31;
|
||||
this.filterTimeMinLabel.Text = "Filter time (minutes)";
|
||||
//
|
||||
// filterTimeMinTextBox
|
||||
//
|
||||
this.filterTimeMinTextBox.Location = new System.Drawing.Point(197, 92);
|
||||
this.filterTimeMinTextBox.Name = "filterTimeMinTextBox";
|
||||
this.filterTimeMinTextBox.Size = new System.Drawing.Size(47, 20);
|
||||
this.filterTimeMinTextBox.TabIndex = 32;
|
||||
//
|
||||
// sensorNameLabel
|
||||
//
|
||||
this.sensorNameLabel.AutoSize = true;
|
||||
this.sensorNameLabel.Location = new System.Drawing.Point(81, 23);
|
||||
this.sensorNameLabel.Name = "sensorNameLabel";
|
||||
this.sensorNameLabel.Size = new System.Drawing.Size(69, 13);
|
||||
this.sensorNameLabel.TabIndex = 29;
|
||||
this.sensorNameLabel.Text = "Sensor name";
|
||||
//
|
||||
// sensorNameTextBox
|
||||
//
|
||||
this.sensorNameTextBox.Location = new System.Drawing.Point(197, 20);
|
||||
this.sensorNameTextBox.Name = "sensorNameTextBox";
|
||||
this.sensorNameTextBox.Size = new System.Drawing.Size(136, 20);
|
||||
this.sensorNameTextBox.TabIndex = 30;
|
||||
//
|
||||
// comPortNrLabel
|
||||
//
|
||||
this.comPortNrLabel.AutoSize = true;
|
||||
this.comPortNrLabel.Location = new System.Drawing.Point(81, 47);
|
||||
this.comPortNrLabel.Name = "comPortNrLabel";
|
||||
this.comPortNrLabel.Size = new System.Drawing.Size(90, 13);
|
||||
this.comPortNrLabel.TabIndex = 27;
|
||||
this.comPortNrLabel.Text = "COM port number";
|
||||
//
|
||||
// comPortNrTextBox
|
||||
//
|
||||
this.comPortNrTextBox.Location = new System.Drawing.Point(197, 44);
|
||||
this.comPortNrTextBox.Name = "comPortNrTextBox";
|
||||
this.comPortNrTextBox.Size = new System.Drawing.Size(47, 20);
|
||||
this.comPortNrTextBox.TabIndex = 28;
|
||||
//
|
||||
// addressLabel
|
||||
//
|
||||
this.addressLabel.AutoSize = true;
|
||||
this.addressLabel.Location = new System.Drawing.Point(81, 71);
|
||||
this.addressLabel.Name = "addressLabel";
|
||||
this.addressLabel.Size = new System.Drawing.Size(85, 13);
|
||||
this.addressLabel.TabIndex = 25;
|
||||
this.addressLabel.Text = "Modbus address";
|
||||
//
|
||||
// addressTextBox
|
||||
//
|
||||
this.addressTextBox.Location = new System.Drawing.Point(197, 68);
|
||||
this.addressTextBox.Name = "addressTextBox";
|
||||
this.addressTextBox.Size = new System.Drawing.Size(47, 20);
|
||||
this.addressTextBox.TabIndex = 26;
|
||||
//
|
||||
// readSensorCheckBox
|
||||
//
|
||||
this.readSensorCheckBox.AutoSize = true;
|
||||
this.readSensorCheckBox.Location = new System.Drawing.Point(6, 0);
|
||||
this.readSensorCheckBox.Name = "readSensorCheckBox";
|
||||
this.readSensorCheckBox.Size = new System.Drawing.Size(95, 17);
|
||||
this.readSensorCheckBox.TabIndex = 24;
|
||||
this.readSensorCheckBox.Text = "Read a sensor";
|
||||
this.readSensorCheckBox.UseVisualStyleBackColor = true;
|
||||
this.readSensorCheckBox.CheckedChanged += new System.EventHandler(this.readSensorCheckBox_CheckedChanged);
|
||||
//
|
||||
// loginRequiredCheckBox
|
||||
//
|
||||
this.loginRequiredCheckBox.AutoSize = true;
|
||||
this.loginRequiredCheckBox.Location = new System.Drawing.Point(411, 21);
|
||||
this.loginRequiredCheckBox.Name = "loginRequiredCheckBox";
|
||||
this.loginRequiredCheckBox.Size = new System.Drawing.Size(114, 17);
|
||||
this.loginRequiredCheckBox.TabIndex = 24;
|
||||
this.loginRequiredCheckBox.Text = "User login required";
|
||||
this.loginRequiredCheckBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// SettingsDlg
|
||||
//
|
||||
this.AcceptButton = this.okButton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.cancelButton;
|
||||
this.ClientSize = new System.Drawing.Size(895, 440);
|
||||
this.Controls.Add(this.loginRequiredCheckBox);
|
||||
this.Controls.Add(this.readSensorGroupBox);
|
||||
this.Controls.Add(this.maximizeWindowOnErrorCheckBox);
|
||||
this.Controls.Add(this.printLabelsGroupBox);
|
||||
this.Controls.Add(this.validPcbPrefixesGroupBox);
|
||||
this.Controls.Add(this.usersDBConnStringLabel);
|
||||
this.Controls.Add(this.usersDBConnStringTextBox);
|
||||
this.Controls.Add(this.checkPreviousTracingRecordsCheckBox);
|
||||
this.Controls.Add(this.saveRFTestResultGroupBox);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.workplaceTextBox);
|
||||
this.Controls.Add(this.archiveFolderLabel);
|
||||
this.Controls.Add(this.archiveFolderTextBox);
|
||||
this.Controls.Add(this.testResultsFolderLabel);
|
||||
this.Controls.Add(this.testResultsFolderTextBox);
|
||||
this.Controls.Add(this.tracingDBConnStringLabel);
|
||||
this.Controls.Add(this.connectionStringTextBox);
|
||||
this.Controls.Add(this.cancelButton);
|
||||
this.Controls.Add(this.okButton);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "SettingsDlg";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.Text = "Settings";
|
||||
this.Load += new System.EventHandler(this.SettingsDlg_Load);
|
||||
this.saveRFTestResultGroupBox.ResumeLayout(false);
|
||||
this.saveRFTestResultGroupBox.PerformLayout();
|
||||
this.validPcbPrefixesGroupBox.ResumeLayout(false);
|
||||
this.validPcbPrefixesGroupBox.PerformLayout();
|
||||
this.printLabelsGroupBox.ResumeLayout(false);
|
||||
this.printLabelsGroupBox.PerformLayout();
|
||||
this.readSensorGroupBox.ResumeLayout(false);
|
||||
this.readSensorGroupBox.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button okButton;
|
||||
private System.Windows.Forms.Button cancelButton;
|
||||
private System.Windows.Forms.TextBox connectionStringTextBox;
|
||||
private System.Windows.Forms.ComboBox oracleModeComboBox;
|
||||
private System.Windows.Forms.TextBox workplaceTextBox;
|
||||
private System.Windows.Forms.TextBox archiveFolderTextBox;
|
||||
private System.Windows.Forms.Label tracingDBConnStringLabel;
|
||||
private System.Windows.Forms.TextBox testResultsFolderTextBox;
|
||||
private System.Windows.Forms.Label testResultsFolderLabel;
|
||||
private System.Windows.Forms.Label archiveFolderLabel;
|
||||
private System.Windows.Forms.Label oracleModeLabel;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.GroupBox saveRFTestResultGroupBox;
|
||||
private System.Windows.Forms.CheckBox saveTestResultToOracleCheckBox;
|
||||
private System.Windows.Forms.CheckBox checkPreviousTracingRecordsCheckBox;
|
||||
private System.Windows.Forms.Label usersDBConnStringLabel;
|
||||
private System.Windows.Forms.TextBox usersDBConnStringTextBox;
|
||||
private System.Windows.Forms.Label validSNPrefixesLabel;
|
||||
private System.Windows.Forms.TextBox validSNPrefixesTextBox;
|
||||
private System.Windows.Forms.GroupBox validPcbPrefixesGroupBox;
|
||||
private System.Windows.Forms.CheckBox checkSNsValidityCheckBox;
|
||||
private System.Windows.Forms.GroupBox printLabelsGroupBox;
|
||||
private System.Windows.Forms.CheckBox printLabelsCheckBox;
|
||||
private System.Windows.Forms.CheckBox printGoodLabelsOnlyCheckBox;
|
||||
private System.Windows.Forms.CheckBox maximizeWindowOnErrorCheckBox;
|
||||
private System.Windows.Forms.GroupBox readSensorGroupBox;
|
||||
private System.Windows.Forms.Label comPortNrLabel;
|
||||
private System.Windows.Forms.TextBox comPortNrTextBox;
|
||||
private System.Windows.Forms.Label addressLabel;
|
||||
private System.Windows.Forms.TextBox addressTextBox;
|
||||
private System.Windows.Forms.CheckBox readSensorCheckBox;
|
||||
private System.Windows.Forms.Label sensorNameLabel;
|
||||
private System.Windows.Forms.TextBox sensorNameTextBox;
|
||||
private System.Windows.Forms.Label filterTimeMinLabel;
|
||||
private System.Windows.Forms.TextBox filterTimeMinTextBox;
|
||||
private System.Windows.Forms.CheckBox loginRequiredCheckBox;
|
||||
}
|
||||
}
|
||||
@@ -1,142 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2019-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing;
|
||||
using SharedDatabase;
|
||||
|
||||
namespace GenericTest
|
||||
{
|
||||
public partial class SettingsDlg : Form
|
||||
{
|
||||
public SettingsDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
for (Mode m = 0; m < Mode.Count; m++) oracleModeComboBox.Items.Add(m.ToString());
|
||||
|
||||
ManageCheckGroupBox(checkSNsValidityCheckBox, validPcbPrefixesGroupBox);
|
||||
ManageCheckGroupBox(saveTestResultToOracleCheckBox, saveRFTestResultGroupBox);
|
||||
ManageCheckGroupBox(printLabelsCheckBox, printLabelsGroupBox);
|
||||
ManageCheckGroupBox(readSensorCheckBox, readSensorGroupBox);
|
||||
}
|
||||
|
||||
private void SettingsDlg_Load(object sender, EventArgs e)
|
||||
{
|
||||
LocalSettings ls = Program.LocalSettings;
|
||||
|
||||
workplaceTextBox.Text = ls.Workplace;
|
||||
loginRequiredCheckBox.Checked = ls.IsUserLoginRequired;
|
||||
|
||||
connectionStringTextBox.Text = ls.ConnectionString;
|
||||
usersDBConnStringTextBox.Text = ls.UsersDBConnString;
|
||||
testResultsFolderTextBox.Text = ls.TestResultsFolder;
|
||||
archiveFolderTextBox.Text = ls.ArchiveFolder;
|
||||
|
||||
checkSNsValidityCheckBox.Checked = ls.DoCheckSNsValidity;
|
||||
validSNPrefixesTextBox.Text = ls.ValidSNPrefixes;
|
||||
|
||||
checkPreviousTracingRecordsCheckBox.Checked = ls.DoCheckPreviousTracingRecords;
|
||||
|
||||
saveTestResultToOracleCheckBox.Checked = ls.DoSaveTestResultToOracle;
|
||||
if (ls.OracleMode >= 0 && ls.OracleMode < Mode.Count) oracleModeComboBox.Text = ls.OracleMode.ToString();
|
||||
|
||||
printLabelsCheckBox.Checked = ls.DoPrintLabels;
|
||||
printGoodLabelsOnlyCheckBox.Checked = ls.DoPrintGoodLabelsOnly;
|
||||
|
||||
maximizeWindowOnErrorCheckBox.Checked = ls.MaximizeWindowOnError;
|
||||
|
||||
readSensorCheckBox.Checked = ls.DoReadSensor;
|
||||
sensorNameTextBox.Text = ls.SensorName;
|
||||
comPortNrTextBox.Text = ls.SensorComPortNr.ToString();
|
||||
addressTextBox.Text = ls.SensorAddress.ToString();
|
||||
filterTimeMinTextBox.Text = ls.SensorFilterTimeMinutes.ToString();
|
||||
}
|
||||
|
||||
private void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
LocalSettings ls = Program.LocalSettings;
|
||||
|
||||
ls.Workplace = workplaceTextBox.Text;
|
||||
ls.IsUserLoginRequired = loginRequiredCheckBox.Checked;
|
||||
|
||||
ls.ConnectionString = connectionStringTextBox.Text;
|
||||
ls.UsersDBConnString = usersDBConnStringTextBox.Text;
|
||||
ls.TestResultsFolder = testResultsFolderTextBox.Text;
|
||||
ls.ArchiveFolder = archiveFolderTextBox.Text;
|
||||
|
||||
ls.DoCheckSNsValidity = checkSNsValidityCheckBox.Checked;
|
||||
ls.ValidSNPrefixes = validSNPrefixesTextBox.Text;
|
||||
|
||||
ls.DoCheckPreviousTracingRecords = checkPreviousTracingRecordsCheckBox.Checked;
|
||||
|
||||
ls.DoSaveTestResultToOracle = saveTestResultToOracleCheckBox.Checked;
|
||||
for (Mode m = 0; m < Mode.Count; m++)
|
||||
{
|
||||
if (oracleModeComboBox.Text == m.ToString()) { ls.OracleMode = m; break; }
|
||||
}
|
||||
|
||||
ls.DoPrintLabels = printLabelsCheckBox.Checked;
|
||||
ls.DoPrintGoodLabelsOnly = printGoodLabelsOnlyCheckBox.Checked;
|
||||
|
||||
ls.MaximizeWindowOnError = maximizeWindowOnErrorCheckBox.Checked;
|
||||
|
||||
ls.DoReadSensor = readSensorCheckBox.Checked;
|
||||
if (ls.DoReadSensor)
|
||||
{
|
||||
ls.SensorName = sensorNameTextBox.Text;
|
||||
|
||||
int ival;
|
||||
if (int.TryParse(comPortNrTextBox.Text, out ival)) ls.SensorComPortNr = ival;
|
||||
if (int.TryParse(addressTextBox.Text, out ival)) ls.SensorAddress = ival;
|
||||
if (int.TryParse(filterTimeMinTextBox.Text, out ival)) ls.SensorFilterTimeMinutes = ival;
|
||||
}
|
||||
|
||||
ls.Save();
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void cancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void ManageCheckGroupBox(CheckBox chk, GroupBox grp)
|
||||
{
|
||||
/// Make sure the CheckBox isn't in the GroupBox. This will only happen the first time.
|
||||
if (chk.Parent == grp)
|
||||
{
|
||||
grp.Parent.Controls.Add(chk); /// Reparent the CheckBox so it's not in the GroupBox.
|
||||
chk.Location = new Point(chk.Left + grp.Left, chk.Top + grp.Top); /// Adjust the CheckBox's location.
|
||||
chk.BringToFront(); /// Move the CheckBox to the top of the stacking order.
|
||||
}
|
||||
|
||||
/// Enable or disable the GroupBox.
|
||||
grp.Enabled = chk.Checked;
|
||||
}
|
||||
|
||||
private void checkSNsValidityCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ManageCheckGroupBox(checkSNsValidityCheckBox, validPcbPrefixesGroupBox);
|
||||
}
|
||||
|
||||
private void saveTestResultToOracleCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ManageCheckGroupBox(saveTestResultToOracleCheckBox, saveRFTestResultGroupBox);
|
||||
}
|
||||
|
||||
private void printLabelsCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ManageCheckGroupBox(printLabelsCheckBox, printLabelsGroupBox);
|
||||
}
|
||||
|
||||
private void readSensorCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
ManageCheckGroupBox(readSensorCheckBox, readSensorGroupBox);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
||||
@@ -1,23 +1,19 @@
|
||||
///
|
||||
/// Copyright (c) 2021-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using log4net;
|
||||
using NHibernate;
|
||||
using SharedDatabase;
|
||||
using SharedDatabase.Entities;
|
||||
using OrderManagement.Resources;
|
||||
using NHibernate;
|
||||
|
||||
namespace OrderManagement
|
||||
{
|
||||
public partial class EditOrderDlg : Form
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(EditOrderDlg));
|
||||
|
||||
ISessionFactory sessionFactory;
|
||||
ISession session;
|
||||
OrderInfo oriOrder;
|
||||
IList<OrderInfo> listOfOrders;
|
||||
bool isEnablePredefinedOrders;
|
||||
@@ -25,11 +21,11 @@ namespace OrderManagement
|
||||
|
||||
EditParametersCtrl editParametersCtrl;
|
||||
|
||||
public EditOrderDlg(ISessionFactory sessionFactory, OrderInfo order, IList<OrderInfo> listOfOrders, bool isEnablePredefinedOrders = false, bool editMode = false)
|
||||
public EditOrderDlg(ISession session, OrderInfo order, IList<OrderInfo> listOfOrders, bool isEnablePredefinedOrders = false, bool editMode = false)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.sessionFactory = sessionFactory;
|
||||
this.session = session;
|
||||
this.oriOrder = order;
|
||||
this.listOfOrders = listOfOrders;
|
||||
this.isEnablePredefinedOrders = isEnablePredefinedOrders;
|
||||
@@ -54,10 +50,9 @@ namespace OrderManagement
|
||||
{
|
||||
OrderInfo modifiedOrder = editParametersCtrl.ParamsProvider as OrderInfo;
|
||||
|
||||
long modifiedOrderNr;
|
||||
if (!long.TryParse(modifiedOrder.POName, out modifiedOrderNr) ||
|
||||
modifiedOrderNr <= 0 ||
|
||||
(!isEnablePredefinedOrders && modifiedOrderNr <= OrderManagementDlg.MaxPredefinedOrderNr))
|
||||
int modifiedOrderNr;
|
||||
if (!isEnablePredefinedOrders &&
|
||||
(!int.TryParse(modifiedOrder.POName, out modifiedOrderNr) || modifiedOrderNr <= OrderManagementDlg.MaxPredefinedOrderNr))
|
||||
{
|
||||
MessageBox.Show(string.Format(Strings.Order_number_must_be_larger_then_0, OrderManagementDlg.MaxPredefinedOrderNr));
|
||||
return;
|
||||
@@ -76,55 +71,10 @@ namespace OrderManagement
|
||||
return;
|
||||
}
|
||||
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
modifiedOrder.CopyContentTo(oriOrder);
|
||||
|
||||
ITransaction transaction = null;
|
||||
bool oriOrdermodified = false;
|
||||
bool saved = false;
|
||||
try
|
||||
if (Save(oriOrder))
|
||||
{
|
||||
ISession session = sessionFactory.OpenSession();
|
||||
transaction = session.BeginTransaction();
|
||||
|
||||
var list = (oriOrder.Id != 0)
|
||||
? session.QueryOver<OrderInfo>().Where(x => x.Id == oriOrder.Id).List()
|
||||
: new List<OrderInfo> { oriOrder };
|
||||
|
||||
if (list.Count != 1)
|
||||
{
|
||||
transaction.Rollback();
|
||||
}
|
||||
else if (list[0].Equals(oriOrder, true))
|
||||
{
|
||||
modifiedOrder.CopyContentTo(list[0], true);
|
||||
session.SaveOrUpdate(list[0]);
|
||||
transaction.Commit();
|
||||
session.Flush();
|
||||
list[0].CopyContentTo(oriOrder, false);
|
||||
saved = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
list[0].CopyContentTo(oriOrder, false);
|
||||
transaction.Rollback();
|
||||
oriOrdermodified = true;
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
if (transaction != null) transaction.Rollback();
|
||||
log.ErrorFormat("Saving an order failed: {1}", exc.Message);
|
||||
}
|
||||
|
||||
Cursor.Current = Cursors.Default;
|
||||
|
||||
if (saved)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
else if (oriOrdermodified)
|
||||
{
|
||||
MessageBox.Show("Original order was modified by someone else,\r\ntry to adit this order once again");
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
else
|
||||
@@ -136,6 +86,34 @@ namespace OrderManagement
|
||||
Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves the new or modified order to the database
|
||||
/// </summary>
|
||||
/// <returns>true when successful</returns>
|
||||
bool Save(OrderInfo order)
|
||||
{
|
||||
ITransaction transaction = session.BeginTransaction();
|
||||
|
||||
try
|
||||
{
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
|
||||
session.SaveOrUpdate(order);
|
||||
transaction.Commit();
|
||||
session.Flush();
|
||||
Cursor.Current = Cursors.Default;
|
||||
return true;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
transaction.Rollback();
|
||||
MessageBox.Show(string.Format("{0}{1}{2}", Strings.Saving_order_failed, Environment.NewLine, exc.Message),
|
||||
Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
Cursor.Current = Cursors.Default;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
@@ -151,7 +129,7 @@ namespace OrderManagement
|
||||
/// <returns>false = OK, true = conflict (MessageBox appears before returning true)</returns>
|
||||
bool IsConflict(OrderInfo order, IList<OrderInfo> listOfOrders, OrderInfo orderToIgnore)
|
||||
{
|
||||
if (order.POName.Length == 7 && order.POName[0] == '3')
|
||||
if (order.POName[0] == '3')
|
||||
{
|
||||
if (MessageBox.Show(string.Format("{0}\r\n{1}", Strings.It_is_not_recommended_that_orders_start_with_3,
|
||||
Strings.Abort_creating_an_order_QM),
|
||||
@@ -226,11 +204,11 @@ namespace OrderManagement
|
||||
if (MessageBox.Show(string.Format("{0}\r\n{1}: radio {2} .. {3}\r\n{4}: radio {5} .. {6}\r\n{7}",
|
||||
Strings.There_is_a_conflict,
|
||||
order.POName,
|
||||
order.RAPrefix + order.RAFirst.ToString(Const.RAFormat) + snStdSuffix,
|
||||
order.RAPrefix + (order.RAFirst + order.PiecesCount).ToString(Const.RAFormat) + snStdSuffix,
|
||||
order.RAPrefix + order.RAFirst.ToString("D9") + snStdSuffix,
|
||||
order.RAPrefix + (order.RAFirst + order.PiecesCount).ToString("D9") + snStdSuffix,
|
||||
another.POName,
|
||||
another.RAPrefix + another.RAFirst.ToString(Const.RAFormat) + StandardSuffix(another, true),
|
||||
another.RAPrefix + (another.RAFirst + another.PiecesCount).ToString(Const.RAFormat) + StandardSuffix(another, true),
|
||||
another.RAPrefix + another.RAFirst.ToString("D9") + StandardSuffix(another, true),
|
||||
another.RAPrefix + (another.RAFirst + another.PiecesCount).ToString("D9") + StandardSuffix(another, true),
|
||||
Strings.Abort_creating_an_order_QM),
|
||||
Strings.Warning,
|
||||
MessageBoxButtons.YesNo,
|
||||
|
||||
@@ -17,9 +17,9 @@ namespace OrderManagement
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(OrderManagementDlg));
|
||||
|
||||
public const long MaxPredefinedOrderNr = 1000;
|
||||
public const int MaxPredefinedOrderNr = 1000;
|
||||
|
||||
ISessionFactory sessionFactory;
|
||||
ISession session;
|
||||
IList<OrderInfo> listOfOrders;
|
||||
IList<Process> listOfWorkflows;
|
||||
|
||||
@@ -46,10 +46,10 @@ namespace OrderManagement
|
||||
Text = string.Format("{0} v.{1}", Program.ProgramName, Program.Version); ;
|
||||
}
|
||||
|
||||
public OrderManagementDlg(ISessionFactory sessionFactory, IList<OrderInfo> listOfOrders, IList<Process> listOfWorkflows)
|
||||
public OrderManagementDlg(ISession session, IList<OrderInfo> listOfOrders, IList<Process> listOfWorkflows)
|
||||
: this()
|
||||
{
|
||||
this.sessionFactory = sessionFactory;
|
||||
this.session = session;
|
||||
this.listOfOrders = listOfOrders;
|
||||
this.listOfWorkflows = listOfWorkflows;
|
||||
}
|
||||
@@ -78,14 +78,7 @@ namespace OrderManagement
|
||||
|
||||
void Localize()
|
||||
{
|
||||
Text = string.Format("{0} ver.{1}", Strings.Order_Management, Program.Version);
|
||||
settingsToolStripMenuItem.Text = Strings.Settings;
|
||||
closeButton.Text = Strings.Close;
|
||||
addButton.Text = Strings.Add;
|
||||
editButton.Text = Strings.Edit;
|
||||
copyButton.Text = Strings.Copy;
|
||||
deleteButton.Text = Strings.Delete;
|
||||
printButton.Text = Strings.Print;
|
||||
}
|
||||
|
||||
enum Clmn
|
||||
@@ -97,7 +90,6 @@ namespace OrderManagement
|
||||
Variant,
|
||||
VacoDescr,
|
||||
MadeInText,
|
||||
Year,
|
||||
ModuleParam,
|
||||
LaserMarking,
|
||||
Packing,
|
||||
@@ -115,17 +107,16 @@ namespace OrderManagement
|
||||
|
||||
void InitializeColumns(ListView lv)
|
||||
{
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Order, Width = 65 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.State, Width = 65 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Workflow, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_procedure, Width = 200 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Order, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.State, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Workflow, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Test_procedure, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Variant_code, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Variant_description, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Made_in_text, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Year_of_calibration, Width = 50 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Module_parameter, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Laser_marking, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Packing, Width = 100 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Variant_description, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Made_in_text, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Module_parameter, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Laser_marking, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Packing, Width = 150 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.Pieces_count, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.SN + " " + Strings.prefix, Width = 80 });
|
||||
lv.Columns.Add(new ColumnHeader { Text = Strings.SN + " " + Strings.first, Width = 80 });
|
||||
@@ -146,7 +137,6 @@ namespace OrderManagement
|
||||
lvi.SubItems.Add(o.VariantCode);
|
||||
lvi.SubItems.Add(o.VacoDescription);
|
||||
lvi.SubItems.Add(o.MadeInText);
|
||||
lvi.SubItems.Add(o.Year.ToString());
|
||||
lvi.SubItems.Add(o.ModuleParam);
|
||||
lvi.SubItems.Add(o.LaserMarking);
|
||||
lvi.SubItems.Add(o.Packing);
|
||||
@@ -156,7 +146,7 @@ namespace OrderManagement
|
||||
lvi.SubItems.Add(o.SNDigitsCount.ToString());
|
||||
lvi.SubItems.Add(o.SNSuffix);
|
||||
lvi.SubItems.Add(o.RAPrefix);
|
||||
lvi.SubItems.Add(o.RAFirst.ToString(SharedDatabase.Const.RAFormat));
|
||||
lvi.SubItems.Add(o.RAFirst.ToString("D9"));
|
||||
lvi.SubItems.Add(o.RASuffix);
|
||||
lvi.SubItems.Add(o.Remark);
|
||||
lvi.Tag = o;
|
||||
@@ -173,7 +163,6 @@ namespace OrderManagement
|
||||
lvi.SubItems[i++].Text = o.VariantCode;
|
||||
lvi.SubItems[i++].Text = o.VacoDescription;
|
||||
lvi.SubItems[i++].Text = o.MadeInText;
|
||||
lvi.SubItems[i++].Text = o.Year.ToString();
|
||||
lvi.SubItems[i++].Text = o.ModuleParam;
|
||||
lvi.SubItems[i++].Text = o.LaserMarking;
|
||||
lvi.SubItems[i++].Text = o.Packing;
|
||||
@@ -183,7 +172,7 @@ namespace OrderManagement
|
||||
lvi.SubItems[i++].Text = o.SNDigitsCount.ToString();
|
||||
lvi.SubItems[i++].Text = o.SNSuffix;
|
||||
lvi.SubItems[i++].Text = o.RAPrefix;
|
||||
lvi.SubItems[i++].Text = o.RAFirst.ToString(SharedDatabase.Const.RAFormat);
|
||||
lvi.SubItems[i++].Text = o.RAFirst.ToString("D9");
|
||||
lvi.SubItems[i++].Text = o.RASuffix;
|
||||
lvi.SubItems[i++].Text = o.Remark;
|
||||
}
|
||||
@@ -192,7 +181,7 @@ namespace OrderManagement
|
||||
{
|
||||
try
|
||||
{
|
||||
Common.CurrentUser.RemoteUsersDB = new Common.DBSettings(Common.DBType.MySql, Program.LocalSettings.UsersDBConnString);
|
||||
Common.GlobalData.RemoteUsersDB = new Common.DBSettings(Common.DBType.MySql, Program.LocalSettings.UsersDBConnString);
|
||||
|
||||
DialogResult dr = new SharedDatabase.Forms.LoginDlg().ShowDialog();
|
||||
if (dr != DialogResult.OK) return;
|
||||
@@ -239,7 +228,7 @@ namespace OrderManagement
|
||||
///
|
||||
var order = new OrderInfo(candidatePOName);
|
||||
|
||||
if (new EditOrderDlg(sessionFactory, order, listOfOrders, Program.LocalSettings.IsShowPredefinedOrders).ShowDialog()
|
||||
if (new EditOrderDlg(session, order, listOfOrders, Program.LocalSettings.IsShowPredefinedOrders).ShowDialog()
|
||||
== DialogResult.OK)
|
||||
{
|
||||
listOfOrders.Add(order);
|
||||
@@ -258,14 +247,7 @@ namespace OrderManagement
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
new OrderStateDlg(order, sessionFactory).ShowDialog();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
log.ErrorFormat("Failed to read order {0} when creating OrderStateDlg: {1)", order.POName, exc.Message);
|
||||
}
|
||||
new OrderStateDlg(session, order).ShowDialog();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,7 +258,7 @@ namespace OrderManagement
|
||||
OrderInfo order = listViewEx1.SelectedItems[0].Tag as OrderInfo;
|
||||
if (order.POState == (sbyte)OrderState.New)
|
||||
{
|
||||
if (new EditOrderDlg(sessionFactory, order, listOfOrders, Program.LocalSettings.IsShowPredefinedOrders, true).ShowDialog()
|
||||
if (new EditOrderDlg(session, order, listOfOrders, Program.LocalSettings.IsShowPredefinedOrders, true).ShowDialog()
|
||||
== DialogResult.OK)
|
||||
{
|
||||
UpdateRow(listViewEx1.SelectedItems[0], order);
|
||||
@@ -311,31 +293,31 @@ namespace OrderManagement
|
||||
///
|
||||
/// Create and edit the order
|
||||
///
|
||||
OrderInfo copiedOrder = oriOrder.Clone() as OrderInfo;
|
||||
copiedOrder.POName = candidatePOName;
|
||||
copiedOrder.POState = (sbyte)OrderState.New;
|
||||
copiedOrder.SNFirst = oriOrder.SNFirst + oriOrder.PiecesCount; /// TODO
|
||||
copiedOrder.RAFirst = oriOrder.RAFirst + oriOrder.PiecesCount; /// TODO
|
||||
copiedOrder.BaseNr1 = 0;
|
||||
copiedOrder.BaseNr2 = 0;
|
||||
copiedOrder.BaseNr3 = 0;
|
||||
copiedOrder.BaseNr4 = 0;
|
||||
copiedOrder.BaseNr5 = 0;
|
||||
copiedOrder.CurrentPcsCount = 0;
|
||||
copiedOrder.CurrentSN = 0;
|
||||
copiedOrder.CurrentRA = 0;
|
||||
copiedOrder.CurrentNr1 = 0;
|
||||
copiedOrder.CurrentNr2 = 0;
|
||||
copiedOrder.CurrentNr3 = 0;
|
||||
copiedOrder.CurrentNr4 = 0;
|
||||
copiedOrder.CurrentNr5 = 0;
|
||||
copiedOrder.Remark = string.Format("Copy of order {0}", oriOrder.POName);
|
||||
OrderInfo newOrder = oriOrder.Clone() as OrderInfo;
|
||||
newOrder.POName = candidatePOName;
|
||||
newOrder.POState = (sbyte)OrderState.New;
|
||||
newOrder.SNFirst = oriOrder.SNFirst + oriOrder.PiecesCount; /// TODO
|
||||
newOrder.RAFirst = oriOrder.RAFirst + oriOrder.PiecesCount; /// TODO
|
||||
newOrder.BaseNr1 = 0;
|
||||
newOrder.BaseNr2 = 0;
|
||||
newOrder.BaseNr3 = 0;
|
||||
newOrder.BaseNr4 = 0;
|
||||
newOrder.BaseNr5 = 0;
|
||||
newOrder.CurrentPcsCount = 0;
|
||||
newOrder.CurrentSN = 0;
|
||||
newOrder.CurrentRA = 0;
|
||||
newOrder.CurrentNr1 = 0;
|
||||
newOrder.CurrentNr2 = 0;
|
||||
newOrder.CurrentNr3 = 0;
|
||||
newOrder.CurrentNr4 = 0;
|
||||
newOrder.CurrentNr5 = 0;
|
||||
newOrder.Remark = string.Format("Copy of order {0}", oriOrder.POName);
|
||||
|
||||
if (new EditOrderDlg(sessionFactory, copiedOrder, listOfOrders, Program.LocalSettings.IsShowPredefinedOrders).ShowDialog()
|
||||
if (new EditOrderDlg(session, newOrder, listOfOrders, Program.LocalSettings.IsShowPredefinedOrders).ShowDialog()
|
||||
== DialogResult.OK)
|
||||
{
|
||||
listOfOrders.Add(copiedOrder);
|
||||
AddRow(listViewEx1, copiedOrder);
|
||||
listOfOrders.Add(newOrder);
|
||||
AddRow(listViewEx1, newOrder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,29 +332,10 @@ namespace OrderManagement
|
||||
{
|
||||
try
|
||||
{
|
||||
ISession session = sessionFactory.OpenSession();
|
||||
var list = session.QueryOver<OrderInfo>().Where(x => x.Id == order.Id).List();
|
||||
if (list.Count == 1)
|
||||
{
|
||||
if (list[0].POState == (sbyte)OrderState.New)
|
||||
{
|
||||
session.Delete(list[0]);
|
||||
session.Flush();
|
||||
listOfOrders.Remove(order);
|
||||
listViewEx1.Items.Remove(listViewEx1.SelectedItems[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(Strings.You_can_only_delete_New_porduction_orders);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
listOfOrders.Remove(order);
|
||||
listViewEx1.Items.Remove(listViewEx1.SelectedItems[0]);
|
||||
MessageBox.Show(Strings.Order_was_already_deleted);
|
||||
}
|
||||
session.Close();
|
||||
session.Delete(order);
|
||||
session.Flush();
|
||||
listOfOrders.Remove(order);
|
||||
listViewEx1.Items.Remove(listViewEx1.SelectedItems[0]);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
|
||||
@@ -91,11 +91,11 @@ namespace OrderManagement
|
||||
(order.SNSuffix != null) ? order.SNSuffix : string.Empty),
|
||||
Strings.First_radio_address + " :",
|
||||
string.Format("{0}{1}{2}", (order.RAPrefix != null) ? order.RAPrefix : string.Empty,
|
||||
order.RAFirst.ToString(SharedDatabase.Const.RAFormat),
|
||||
order.RAFirst.ToString("D9"),
|
||||
(order.RASuffix != null) ? order.RASuffix : string.Empty),
|
||||
Strings.Last_radio_address + " :",
|
||||
string.Format("{0}{1}{2}", (order.RAPrefix != null) ? order.RAPrefix : string.Empty,
|
||||
(order.RAFirst + order.PiecesCount - 1).ToString(SharedDatabase.Const.RAFormat),
|
||||
(order.RAFirst + order.PiecesCount - 1).ToString("D9"),
|
||||
(order.RASuffix != null) ? order.RASuffix : string.Empty),
|
||||
Strings.Workflow + " :",
|
||||
(order.Workflow != null) ? order.Workflow : string.Empty,
|
||||
|
||||
+1
-15
@@ -40,7 +40,6 @@
|
||||
this.currentSnLabel = new System.Windows.Forms.Label();
|
||||
this.currentRATextBox = new System.Windows.Forms.TextBox();
|
||||
this.currentRALabel = new System.Windows.Forms.Label();
|
||||
this.closeButton = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// orderLabel
|
||||
@@ -145,23 +144,11 @@
|
||||
this.currentRALabel.TabIndex = 10;
|
||||
this.currentRALabel.Text = "Last assigned radio address";
|
||||
//
|
||||
// closeButton
|
||||
//
|
||||
this.closeButton.Location = new System.Drawing.Point(364, 23);
|
||||
this.closeButton.Name = "closeButton";
|
||||
this.closeButton.Size = new System.Drawing.Size(85, 43);
|
||||
this.closeButton.TabIndex = 12;
|
||||
this.closeButton.Text = "Close";
|
||||
this.closeButton.UseVisualStyleBackColor = true;
|
||||
this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
|
||||
//
|
||||
// OrderStateDlg
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(479, 219);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.closeButton);
|
||||
this.Controls.Add(this.currentRATextBox);
|
||||
this.Controls.Add(this.currentRALabel);
|
||||
this.Controls.Add(this.currentSnTextBox);
|
||||
@@ -179,7 +166,7 @@
|
||||
this.Name = "OrderStateDlg";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Order State";
|
||||
this.Text = "Order state";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
@@ -199,6 +186,5 @@
|
||||
private System.Windows.Forms.Label currentSnLabel;
|
||||
private System.Windows.Forms.TextBox currentRATextBox;
|
||||
private System.Windows.Forms.Label currentRALabel;
|
||||
private System.Windows.Forms.Button closeButton;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2021-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
@@ -11,81 +11,35 @@ namespace OrderManagement
|
||||
{
|
||||
public partial class OrderStateDlg : Form
|
||||
{
|
||||
ISessionFactory sessionFactory;
|
||||
int orderId;
|
||||
Timer timer;
|
||||
ISession session;
|
||||
OrderInfo order;
|
||||
|
||||
private OrderStateDlg()
|
||||
public OrderStateDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
Localize();
|
||||
}
|
||||
|
||||
public OrderStateDlg(OrderInfo order, ISessionFactory sessionFactory)
|
||||
public OrderStateDlg(ISession session,OrderInfo order)
|
||||
: this()
|
||||
{
|
||||
this.sessionFactory = sessionFactory;
|
||||
this.orderId = order.Id;
|
||||
this.session = session;
|
||||
this.order = order;
|
||||
Localize();
|
||||
|
||||
/// Update UI when this form is loaded
|
||||
timer_Tick(null, null);
|
||||
|
||||
/// Timer for regular 5 second ticks
|
||||
timer = new System.Windows.Forms.Timer();
|
||||
timer.Interval = 5000; // ms
|
||||
timer.Tick += new EventHandler(timer_Tick);
|
||||
timer.Start();
|
||||
}
|
||||
|
||||
void timer_Tick(object sender, EventArgs args)
|
||||
{
|
||||
try
|
||||
{
|
||||
var session = sessionFactory.OpenSession();
|
||||
var list = session.QueryOver<OrderInfo>().Where(x => x.Id == orderId).List();
|
||||
session.Close();
|
||||
|
||||
if (list.Count == 1) UpdateUI(list[0]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
stateTextBox.Text = "---";
|
||||
targetPcsCountTextBox.Text = "---";
|
||||
producedPcsCountTextBox.Text = "---";
|
||||
currentSnTextBox.Text = "---";
|
||||
currentRATextBox.Text = "---";
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateUI(OrderInfo o)
|
||||
{
|
||||
orderTextBox.Text = o.POName;
|
||||
stateTextBox.Text = ((OrderState)o.POState).ToString();
|
||||
targetPcsCountTextBox.Text = o.PiecesCount.ToString();
|
||||
producedPcsCountTextBox.Text = o.CurrentPcsCount.ToString();
|
||||
currentSnTextBox.Text = (o.SNPrefix != null ? o.SNPrefix : string.Empty)
|
||||
+ o.CurrentSN.ToString(string.Format("D{0}", o.SNDigitsCount))
|
||||
+ (o.SNSuffix != null ? o.SNSuffix : string.Empty);
|
||||
currentRATextBox.Text = (o.RAPrefix != null ? o.RAPrefix : string.Empty)
|
||||
+ o.CurrentRA.ToString(SharedDatabase.Const.RAFormat)
|
||||
+ (o.RASuffix != null ? o.RASuffix : string.Empty);
|
||||
orderTextBox.Text = order.POName;
|
||||
stateTextBox.Text = ((OrderState)order.POState).ToString();
|
||||
targetPcsCountTextBox.Text = order.PiecesCount.ToString();
|
||||
producedPcsCountTextBox.Text = order.CurrentPcsCount.ToString();
|
||||
currentSnTextBox.Text = (order.SNPrefix != null ? order.SNPrefix : string.Empty) + order.CurrentSN.ToString(string.Format("D{0}", order.SNDigitsCount))
|
||||
+ (order.SNSuffix != null ? order.SNSuffix : string.Empty);
|
||||
currentRATextBox.Text = (order.RAPrefix != null ? order.RAPrefix : string.Empty) + order.CurrentRA.ToString("D9")
|
||||
+ (order.RASuffix != null ? order.RASuffix : string.Empty);
|
||||
}
|
||||
|
||||
void Localize()
|
||||
{
|
||||
Text = Strings.Order_State;
|
||||
orderLabel.Text = Strings.Order;
|
||||
stateLabel.Text = Strings.State;
|
||||
targetPcsCountLabel.Text = Strings.Target_quantity;
|
||||
producedPcsCountLabel.Text = Strings.Produced_quantity;
|
||||
currentSnLabel.Text = Strings.Last_assigned_serial_number;
|
||||
currentRALabel.Text = Strings.Last_assigned_radio_address;
|
||||
closeButton.Text = Strings.Close;
|
||||
}
|
||||
|
||||
private void closeButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
///
|
||||
/// Copyright (c) 2021-2022 Sensus Slovensko a.s.
|
||||
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Windows.Forms;
|
||||
using FluentNHibernate.Cfg;
|
||||
using FluentNHibernate.Cfg.Db;
|
||||
using log4net;
|
||||
using NHibernate;
|
||||
using Common;
|
||||
@@ -160,7 +158,7 @@ namespace OrderManagement
|
||||
{
|
||||
try
|
||||
{
|
||||
Common.CurrentUser.RemoteUsersDB = new DBSettings(Common.DBType.MySql, LocalSettings.UsersDBConnString);
|
||||
Common.GlobalData.RemoteUsersDB = new DBSettings(Common.DBType.MySql, LocalSettings.UsersDBConnString);
|
||||
|
||||
DialogResult dr = new SharedDatabase.Forms.LoginDlg().ShowDialog();
|
||||
if (dr != DialogResult.OK) return;
|
||||
@@ -171,27 +169,19 @@ namespace OrderManagement
|
||||
}
|
||||
}
|
||||
|
||||
ISessionFactory sessionFactory;
|
||||
ISession session;
|
||||
IList<OrderInfo> listOfOrders = null;
|
||||
IList<Process> listOfWorkflows = null;
|
||||
|
||||
while (true)
|
||||
{
|
||||
try
|
||||
{
|
||||
sessionFactory = Fluently.Configure()
|
||||
.Database(MySQLConfiguration.Standard.ConnectionString(LocalSettings.TracingDBConnString))
|
||||
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SharedDatabase.Entities.Process>())
|
||||
.ExposeConfiguration(BuildSchema).BuildSessionFactory();
|
||||
|
||||
ISession session = sessionFactory.OpenSession();
|
||||
|
||||
listOfOrders = session.QueryOver<OrderInfo>().List();
|
||||
|
||||
session = SharedDatabase.TracingDB.CreateSession(LocalSettings.TracingDBConnString);
|
||||
listOfOrders = session.QueryOver<OrderInfo>()
|
||||
.List();
|
||||
listOfWorkflows = session.QueryOver<Process>()
|
||||
.Where(x => x.ReleaseStatus != ReleaseStatus.Deactivated)
|
||||
.List();
|
||||
session.Close();
|
||||
break;
|
||||
}
|
||||
catch (Exception exc)
|
||||
@@ -217,7 +207,7 @@ namespace OrderManagement
|
||||
|
||||
try
|
||||
{
|
||||
OrderManagementDlg dlg = new OrderManagementDlg(sessionFactory, listOfOrders, listOfWorkflows);
|
||||
OrderManagementDlg dlg = new OrderManagementDlg(session, listOfOrders, listOfWorkflows);
|
||||
Application.Run(dlg);
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -234,12 +224,6 @@ namespace OrderManagement
|
||||
}
|
||||
}
|
||||
|
||||
public static void BuildSchema(NHibernate.Cfg.Configuration config)
|
||||
{
|
||||
/// This NHibernate tool takes a configuration (with mapping info in)
|
||||
/// and exports a database schema from it
|
||||
new NHibernate.Tool.hbm2ddl.SchemaExport(config).SetOutputFile("db_schema");
|
||||
}
|
||||
|
||||
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
|
||||
{
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("OrderManagement")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2021-2022")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2021")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
@@ -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("3.0.13.0")]
|
||||
[assembly: AssemblyFileVersion("3.0.13.0")]
|
||||
[assembly: AssemblyVersion("3.0.9.0")]
|
||||
[assembly: AssemblyFileVersion("3.0.9.0")]
|
||||
|
||||
-126
@@ -69,15 +69,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Add.
|
||||
/// </summary>
|
||||
internal static string Add {
|
||||
get {
|
||||
return ResourceManager.GetString("Add", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Are you sure ?.
|
||||
/// </summary>
|
||||
@@ -96,15 +87,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Close.
|
||||
/// </summary>
|
||||
internal static string Close {
|
||||
get {
|
||||
return ResourceManager.GetString("Close", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Close it please using 'Task manager'.
|
||||
/// </summary>
|
||||
@@ -132,15 +114,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Copy.
|
||||
/// </summary>
|
||||
internal static string Copy {
|
||||
get {
|
||||
return ResourceManager.GetString("Copy", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Database.
|
||||
/// </summary>
|
||||
@@ -159,15 +132,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Delete.
|
||||
/// </summary>
|
||||
internal static string Delete {
|
||||
get {
|
||||
return ResourceManager.GetString("Delete", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to digits count.
|
||||
/// </summary>
|
||||
@@ -177,15 +141,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Edit.
|
||||
/// </summary>
|
||||
internal static string Edit {
|
||||
get {
|
||||
return ResourceManager.GetString("Edit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Error.
|
||||
/// </summary>
|
||||
@@ -258,24 +213,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Last assigned radio address.
|
||||
/// </summary>
|
||||
internal static string Last_assigned_radio_address {
|
||||
get {
|
||||
return ResourceManager.GetString("Last_assigned_radio_address", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Last assigned serial number.
|
||||
/// </summary>
|
||||
internal static string Last_assigned_serial_number {
|
||||
get {
|
||||
return ResourceManager.GetString("Last_assigned_serial_number", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Last radio address.
|
||||
/// </summary>
|
||||
@@ -330,15 +267,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Order Management.
|
||||
/// </summary>
|
||||
internal static string Order_Management {
|
||||
get {
|
||||
return ResourceManager.GetString("Order_Management", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Order number must be larger then {0}.
|
||||
/// </summary>
|
||||
@@ -348,24 +276,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Order State.
|
||||
/// </summary>
|
||||
internal static string Order_State {
|
||||
get {
|
||||
return ResourceManager.GetString("Order_State", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Order was already deleted.
|
||||
/// </summary>
|
||||
internal static string Order_was_already_deleted {
|
||||
get {
|
||||
return ResourceManager.GetString("Order_was_already_deleted", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Order with the same ID already exists.
|
||||
/// </summary>
|
||||
@@ -411,24 +321,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Print.
|
||||
/// </summary>
|
||||
internal static string Print {
|
||||
get {
|
||||
return ResourceManager.GetString("Print", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Produced quantity.
|
||||
/// </summary>
|
||||
internal static string Produced_quantity {
|
||||
get {
|
||||
return ResourceManager.GetString("Produced_quantity", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Producton order properties.
|
||||
/// </summary>
|
||||
@@ -546,15 +438,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Target quantity.
|
||||
/// </summary>
|
||||
internal static string Target_quantity {
|
||||
get {
|
||||
return ResourceManager.GetString("Target_quantity", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Test procedure.
|
||||
/// </summary>
|
||||
@@ -627,15 +510,6 @@ namespace OrderManagement.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Year of calibration.
|
||||
/// </summary>
|
||||
internal static string Year_of_calibration {
|
||||
get {
|
||||
return ResourceManager.GetString("Year_of_calibration", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You can only delete 'New' porduction orders.
|
||||
/// </summary>
|
||||
|
||||
@@ -273,46 +273,4 @@
|
||||
<data name="There_is_a_conflict" xml:space="preserve">
|
||||
<value>There is a conflict.</value>
|
||||
</data>
|
||||
<data name="Year_of_calibration" xml:space="preserve">
|
||||
<value>Year of calibration</value>
|
||||
</data>
|
||||
<data name="Order_was_already_deleted" xml:space="preserve">
|
||||
<value>Order was already deleted</value>
|
||||
</data>
|
||||
<data name="Close" xml:space="preserve">
|
||||
<value>Close</value>
|
||||
</data>
|
||||
<data name="Last_assigned_radio_address" xml:space="preserve">
|
||||
<value>Last assigned radio address</value>
|
||||
</data>
|
||||
<data name="Last_assigned_serial_number" xml:space="preserve">
|
||||
<value>Last assigned serial number</value>
|
||||
</data>
|
||||
<data name="Order_State" xml:space="preserve">
|
||||
<value>Order State</value>
|
||||
</data>
|
||||
<data name="Produced_quantity" xml:space="preserve">
|
||||
<value>Produced quantity</value>
|
||||
</data>
|
||||
<data name="Target_quantity" xml:space="preserve">
|
||||
<value>Target quantity</value>
|
||||
</data>
|
||||
<data name="Add" xml:space="preserve">
|
||||
<value>Add</value>
|
||||
</data>
|
||||
<data name="Copy" xml:space="preserve">
|
||||
<value>Copy</value>
|
||||
</data>
|
||||
<data name="Delete" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
<data name="Edit" xml:space="preserve">
|
||||
<value>Edit</value>
|
||||
</data>
|
||||
<data name="Order_Management" xml:space="preserve">
|
||||
<value>Order Management</value>
|
||||
</data>
|
||||
<data name="Print" xml:space="preserve">
|
||||
<value>Print</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -222,7 +222,4 @@
|
||||
<data name="Show_predefined_orders" xml:space="preserve">
|
||||
<value>Zobraziť preddefinované zákazky</value>
|
||||
</data>
|
||||
<data name="Year_of_calibration" xml:space="preserve">
|
||||
<value>Rok overenia</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -38,14 +38,14 @@ namespace OrderManagement
|
||||
{
|
||||
Localize();
|
||||
|
||||
if (ls == null) return;
|
||||
|
||||
languageComboBox.Items.Add("EN");
|
||||
languageComboBox.Items.Add("ZH_CN");
|
||||
languageComboBox.Items.Add("DE");
|
||||
languageComboBox.Items.Add("SK");
|
||||
languageComboBox.Text = ls.Language;
|
||||
|
||||
if (ls == null) return;
|
||||
|
||||
loginRequiredCheckBox.Checked = ls.IsUserLoginRequired;
|
||||
showPredefinedOrdersCheckBox.Checked = ls.IsShowPredefinedOrders;
|
||||
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2018 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
using System.Windows.Forms;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing
|
||||
{
|
||||
/// <summary>
|
||||
/// Class to be serialized to an XML file...
|
||||
/// Public members are filters / parts of a query.
|
||||
/// </summary>
|
||||
[XmlRootAttribute("Query")]
|
||||
public class FiltersConfig
|
||||
{
|
||||
public bool[] FilterEnabled;
|
||||
|
||||
[XmlIgnore]
|
||||
public int FiterEnabledCount { get { return (FilterEnabled != null) ? FilterEnabled.Length : 0; } }
|
||||
|
||||
public string[] ResultItems;
|
||||
|
||||
[XmlArrayAttribute("ResultsClmnWidths")]
|
||||
public int[] ResultsClmnWidths;
|
||||
[XmlIgnore]
|
||||
public int ResultsClmnCount { get { return (ResultsClmnWidths != null) ? ResultsClmnWidths.Length : 0; } }
|
||||
|
||||
|
||||
public FiltersConfig()
|
||||
{
|
||||
ResultItems = new string[]
|
||||
{
|
||||
"Code1~Housing s/n~{0}~~0",
|
||||
"Code2~eRegister nr.~{0}~~0",
|
||||
"Code3~S/N~{0}~~0",
|
||||
"Code4~Radio address~{0}~~0",
|
||||
"POrder~Order~{0}~~0",
|
||||
"Workflow~Workflow~{0}~~0",
|
||||
"Timestamp~Time stamp~{0:dd.MM.yyyy HH:mm:ss}~~0"
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load public fields of this class from the XML file.
|
||||
/// </summary>
|
||||
public static FiltersConfig Load(string fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (TextReader reader = new StreamReader(fileName))
|
||||
{
|
||||
FiltersConfig ls = (new XmlSerializer(typeof(FiltersConfig))).Deserialize(reader) as FiltersConfig;
|
||||
// Copy the settings just in case De-serialize() completes OK
|
||||
return ls;
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
string msg = exc.Message;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save public fields of this class to the XML file.
|
||||
/// </summary>
|
||||
public bool Save(string fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (TextWriter writer = new StreamWriter(fileName))
|
||||
{
|
||||
(new XmlSerializer(typeof(FiltersConfig))).Serialize(writer, this);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
MessageBox.Show(exc.Message, Strings.Error_saving_file, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
-65
@@ -1,65 +0,0 @@
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
partial class MoreInfoDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.listViewEx = new Common.Forms.ListViewEx();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// listViewEx
|
||||
//
|
||||
this.listViewEx.AllowColumnReorder = true;
|
||||
this.listViewEx.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.listViewEx.DoubleClickActivation = false;
|
||||
this.listViewEx.FullRowSelect = true;
|
||||
this.listViewEx.Location = new System.Drawing.Point(0, 0);
|
||||
this.listViewEx.Name = "listViewEx";
|
||||
this.listViewEx.Size = new System.Drawing.Size(1434, 461);
|
||||
this.listViewEx.TabIndex = 0;
|
||||
this.listViewEx.UseCompatibleStateImageBehavior = false;
|
||||
this.listViewEx.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// MoreInfoDlg
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1434, 461);
|
||||
this.Controls.Add(this.listViewEx);
|
||||
this.Name = "MoreInfoDlg";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "More informations";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private Common.Forms.ListViewEx listViewEx;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using NHibernate;
|
||||
using SharedDatabase.Entities;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
public partial class MoreInfoDlg : Form
|
||||
{
|
||||
public MoreInfoDlg(int refRecordId, ISession session)
|
||||
{
|
||||
InitializeComponent();
|
||||
Text = Strings.More_informations;
|
||||
|
||||
listViewEx.Columns.Add("Date/time", 150);
|
||||
listViewEx.Columns.Add("Workstep", 100);
|
||||
listViewEx.Columns.Add("Workplace", 100);
|
||||
listViewEx.Columns.Add("User", 70);
|
||||
listViewEx.Columns.Add("Result", 70);
|
||||
listViewEx.Columns.Add("Parts and serial numbers", 1000);
|
||||
|
||||
var refRecords = session.QueryOver<ReferenceRecord>()
|
||||
.Where(x => (x.Id == refRecordId))
|
||||
.OrderBy(x => x.Timestamp).Asc
|
||||
.List();
|
||||
|
||||
foreach (var rr in refRecords)
|
||||
{
|
||||
foreach (var step in rr.StepRecords)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem(step.Timestamp.ToString());
|
||||
lvi.SubItems.Add(step.Workstep != null ? step.Workstep : string.Empty);
|
||||
lvi.SubItems.Add(step.Workplace != null ? step.Workplace : string.Empty);
|
||||
lvi.SubItems.Add(step.User != null ? step.User : string.Empty);
|
||||
lvi.SubItems.Add(step.Result == 0 ? "OK" : string.Format("Err{0}", step.Result));
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (!string.IsNullOrEmpty(rr.Name1)) sb.Append(string.Format(" {0}={1}", rr.Name1, rr.Code1 != null ? rr.Code1 : string.Empty));
|
||||
if (!string.IsNullOrEmpty(rr.Name2)) sb.Append(string.Format(" {0}={1}", rr.Name2, rr.Code1 != null ? rr.Code2 : string.Empty));
|
||||
if (!string.IsNullOrEmpty(rr.Code3)) sb.Append(string.Format(" S/N={0}", rr.Code3));
|
||||
if (!string.IsNullOrEmpty(rr.Code4)) sb.Append(string.Format(" radio addres={0}", rr.Code4));
|
||||
foreach (var rec in step.Records)
|
||||
{
|
||||
sb.Append(string.Format(" {0}={1}", rec.Name, rec.Code != null ? rec.Code : string.Empty));
|
||||
}
|
||||
lvi.SubItems.Add(sb.ToString());
|
||||
listViewEx.Items.Add(lvi);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
partial class NoBenchOrDatabaseDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NoBenchOrDatabaseDlg));
|
||||
this.exitButton = new System.Windows.Forms.Button();
|
||||
this.retryButton = new System.Windows.Forms.Button();
|
||||
this.configureButton = new System.Windows.Forms.Button();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.errorMessageLabel = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// exitButton
|
||||
//
|
||||
this.exitButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.exitButton.Location = new System.Drawing.Point(42, 68);
|
||||
this.exitButton.Name = "exitButton";
|
||||
this.exitButton.Size = new System.Drawing.Size(246, 33);
|
||||
this.exitButton.TabIndex = 0;
|
||||
this.exitButton.Text = "Exit";
|
||||
this.exitButton.UseVisualStyleBackColor = true;
|
||||
this.exitButton.Click += new System.EventHandler(this.exitButton_Click);
|
||||
//
|
||||
// retryButton
|
||||
//
|
||||
this.retryButton.Location = new System.Drawing.Point(42, 146);
|
||||
this.retryButton.Name = "retryButton";
|
||||
this.retryButton.Size = new System.Drawing.Size(246, 33);
|
||||
this.retryButton.TabIndex = 1;
|
||||
this.retryButton.Text = "Retry database connection";
|
||||
this.retryButton.UseVisualStyleBackColor = true;
|
||||
this.retryButton.Click += new System.EventHandler(this.retryButton_Click);
|
||||
//
|
||||
// configureButton
|
||||
//
|
||||
this.configureButton.Location = new System.Drawing.Point(42, 107);
|
||||
this.configureButton.Name = "configureButton";
|
||||
this.configureButton.Size = new System.Drawing.Size(246, 33);
|
||||
this.configureButton.TabIndex = 2;
|
||||
this.configureButton.Text = "Configure test benches (password required)";
|
||||
this.configureButton.UseVisualStyleBackColor = true;
|
||||
this.configureButton.Click += new System.EventHandler(this.configureButton_Click);
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.ErrorImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.ErrorImage")));
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.InitialImage = null;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(42, 21);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(32, 32);
|
||||
this.pictureBox1.TabIndex = 3;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// errorMessageLabel
|
||||
//
|
||||
this.errorMessageLabel.AutoSize = true;
|
||||
this.errorMessageLabel.Location = new System.Drawing.Point(80, 31);
|
||||
this.errorMessageLabel.Name = "errorMessageLabel";
|
||||
this.errorMessageLabel.Size = new System.Drawing.Size(160, 13);
|
||||
this.errorMessageLabel.TabIndex = 4;
|
||||
this.errorMessageLabel.Text = "Cannot connect to the database";
|
||||
//
|
||||
// NoBenchOrDatabaseDlg
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.exitButton;
|
||||
this.ClientSize = new System.Drawing.Size(328, 194);
|
||||
this.Controls.Add(this.errorMessageLabel);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.configureButton);
|
||||
this.Controls.Add(this.retryButton);
|
||||
this.Controls.Add(this.exitButton);
|
||||
this.Name = "NoBenchOrDatabaseDlg";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Error";
|
||||
this.Load += new System.EventHandler(this.NoDatabaseMsgDlg_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button exitButton;
|
||||
private System.Windows.Forms.Button retryButton;
|
||||
private System.Windows.Forms.Button configureButton;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.Label errorMessageLabel;
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
public partial class NoBenchOrDatabaseDlg : Form
|
||||
{
|
||||
public string Message;
|
||||
public bool ShowRetry;
|
||||
|
||||
public NoBenchOrDatabaseDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void NoDatabaseMsgDlg_Load(object sender, EventArgs e)
|
||||
{
|
||||
Text = Strings.Error;
|
||||
errorMessageLabel.Text = (Message != null) ? Message : Strings.Error;
|
||||
exitButton.Text = Strings.ExitBtnText;
|
||||
retryButton.Text = Strings.RetryDatabaseText;
|
||||
configureButton.Text = Strings.ConfigureDatabaseText;
|
||||
if (!ShowRetry) retryButton.Enabled = false;
|
||||
}
|
||||
|
||||
private void exitButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Abort;
|
||||
}
|
||||
|
||||
private void retryButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Retry;
|
||||
}
|
||||
|
||||
private void configureButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,272 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="pictureBox1.ErrorImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAA0sAAALBCAIAAAAGeq0rAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAF7tJREFUeF7t3Vtw
|
||||
l/Wdx3HvCEkQldrOdJiOhx6o2GqrUEAQFDlExcNuW7fVqb2o3c44g9Orbhc7uDe7nemO2M5gdXWtBBYS
|
||||
BA0oa1By4BwIIWAgIYEi4aCEJFhd123VKfvk0O1h2t274H7m9Zonmf/h9/s+t+95kv/zv+Dc/6qnp2fn
|
||||
jh3VVVVLHn304UWLHlq4sDiKB8XT4sXirWLB8FIAAD4a/mLhdXZ2rq6ufmTx4srKysbGxq6urrP9/R8M
|
||||
Kh4UT4sXi7eKBcWyYvHwNgAAzrc/U3i9vb01NTVLlixpaGjoK550HjpZV3dkVVXH0scP/OOP9/5o8Ws/
|
||||
+efOymXd9Y1nOjv7zpwplhWLiy3F2uERAACcP39aeIc6OpYuXbqxtvatvr5TW7Z2P7/29L8+c+yhh7rv
|
||||
u+/4X321++67Xr/zzsN33tl+192td9/ddP/9bcuWHWva+ebJk8WWYmOxfXgQAADnyR8V3v79+3/62GNt
|
||||
bW19+/a9Xr26r7LyxAMPvHH33SfvvPPkgjuPLVjw+oIFRxYsOFxx+6Fbb22vmHdg3rzmioqtt92279FH
|
||||
T+9pKTYW24shw+MAADgffl94hzo6ij7r7u4+vmHDyZWrTv3g704Ntt3xO+4o2u7o7bcfue22wxUVHfPn
|
||||
H5w3r23OnP1z5rTOnr3n5pubZ87cMnv2v8+Ze2Tt2mJ7McSVPACA82i48Hp7e5cuXdrW1jaQd888c/y7
|
||||
f/vGXXccmzu3a8aMI7fcMtB28+d3zpt/cO7cttm37J89u/Xmm1tm39Q0bdr2a760ddKkrdOn18+YsWHm
|
||||
rCNr1hRDilH+Jw8A4HwZLryampqNtbV9+/YdXrLkxPe+d/yOOw7PurHngQf+a/36kw888NoNUzvmzj0w
|
||||
e/ZQ2zXPmrV75sxt113XfMcdx595pvXe+1656vObJk+unTJ13Y0ze5qbi1HFwKHJAACMsIHC6+zsXLJk
|
||||
yVt9fe2PP35i0aJjty04fNNNb9x//7k33xxY0tNz5Jvf3H3ddUNtt2vGjKYbZ2y59tpd8+f/srHx6Nm+
|
||||
Y/v27fzq116cMOGlL3953fXXv/zXXy1GFQPdQgUA4LwYKLzV1dX19fVv7N51+Id///rttxd5d+yee86d
|
||||
OTO0YsCbpzvuvXfHF7+468Ybt0+btvmLVzdV3PrLLVu6Tpw4cPBgW1dXZ/PuV+fNW/uZz6yZePXzX77u
|
||||
0Ip/a2hoKMYObwcAYARd0NPT88jixb09PV2rVh3+9rcPz5vTPn360Xv+5tw77wwvGfTr06cP3Htv3YQJ
|
||||
dROv2l5RcXjr1q6TJw8ePLhv795Tp0+/++67L1RUrLz88pVXXVU98erae77Wd+ZMMdY3XgAAjLwLdu7Y
|
||||
UVlZeaazq/XBBztuuaV99k1tN9/ccv31h7/znXNvvVWs+PDDD9977713P/zwV93H99x11+ZZs4q8O9Td
|
||||
ffDAgdbW1oG8e+edylmzniwvrxw79tmxY/917Njqa649vX//8uXLi+FDpwEAYMRcUF1V1djY2P1KXevX
|
||||
vn7gpptemzlz78yZe2bM2HrV1W3f+tZ7vb3vnzv39ttvn+3v7/nVr9547bX2urq2rq6i7Xbv2nX81Kn/
|
||||
ePvtZ6dNe6K8fHlZ2S/Kyp4ZPFaMH9/29NObN28uhg+fBwCAkXLBkkcf7erqOvjU0y0VFftm3Lh3xvTd
|
||||
06c3TZu2c+oNdRMm7Lnvvv5Tp/rfffeNU6eOHj3aeeRIW2dnS0tLU1NT91DezZz5ZHn5itLSZWVlzw4e
|
||||
RedVjhvX+OCDxdhi+PB5AAAYKRc8vGjR2f7+5kcW77lp1lDbNU2bsm3KlC2TJzdOnfrylZdvufXWo83N
|
||||
R44da29vb3vttb0tLbt27eo+fvydt99efvPNQ3k3dCwvKyuOIvWWXXhhzexbirHF8OHzAAAwUi54aOHC
|
||||
Dz74oP4b39h9ww1F3m37yle2TJrUOHly/eTJtVdeuW706FWlpfUVFQfa2/e3tQ1dvdu6bVt/f/+L99//
|
||||
RHl58e7K3x1F5A39XlFWtvILXyjGFsOHzwMAwEgZKLzf/OY3m7/73YHrdkXbXX99/aRJm6699qVx49aO
|
||||
Hl1VWvripz61b/Xqlra2PXv2DOTd1q2bt2xp2Latef36lyZOLHquWFMc1X94FIX3pS+9//77Cg8AYOQN
|
||||
/JW290zvzod/1DBlSn2Rd5Mn1V51Vc3o0WsG827d+PH71q/f09HR3NzctHPn1qLwduzY3NBQV1e3afv2
|
||||
vbW1Gz7/+WJZsbjIwRd+d9SUl78wb15/X5+/0gIAjLyBT1p0HOrc/+STr06Zsmny5JevvrpoterBP7a+
|
||||
MH5867p1ze3tzXv27Ny5s/vkybN9fS+vWbNpy5aG+vrGxsYdra0HN2+u/dznisJbP3i8VBwlJRsuvLBh
|
||||
4cKBr8rwSQsAgBE3cLeU+vr6I6++8vLUabXXXDOUdytLS9dcemnr2rVF3u1ubt6xY0eRd2+dPbtsypTK
|
||||
K66ofW5NY1NT086dLS0tnd3d3bubNn3600XYbSwpeaWk5NWSkucuHHuwclmRgO6WAgAw8gbuePzssmdP
|
||||
drS/OG3a2ksuqRq8erd63LjW554byLvdu4u8OzaYd0M3Rini77kJExrWr9976NCh9vZjx471/+d7/fv3
|
||||
N47/VP2oUQ2jRjWOGrX6sst7DrYtX17pjscAACNv+FvLTp04sX7u3KqPfazIu2fLyqovv3x3XV3Tvn3b
|
||||
t2/vPnHirf7+Z2688YnBvBv6UEXNxIktjY3Hz5zp7e399W9/e7a/v27ChG2jRu0cXbJt7NjmH/9TX2/v
|
||||
PzzyiG8tAwAYeRcUP6urqxsaGg4+9dTK8eOXlZf/oqzsX8rKVk2aVL9hw+tvvFHk3dPTp/988L53ReEV
|
||||
ebd29Oia0aM3fPazR/fu/eDcubfPnn1l/vxNJSUtpaV7y8qeu/jiY431DY0NxdihcwAAMJIGCm/gIxFL
|
||||
lrzV17duzpwVH//4U2VlT5aXP15eXnnddfs2bnxq2tSl5eXLysqKwltVWvpcaWmRdy+VlLxcUrLlmmuO
|
||||
P/98w2231Y8atb+srK28fM+4j62bP78YVQwsxg6dAwCAkTRQeIWampqNtbWnd+9e/unP/GLcuJ+XlxdV
|
||||
Vxw/Hfz9zODXkRWFVzV4AW/96NG1JSWbSkoaR40qfm8fNapou44xY/Zfcsmqyy7rbWl5ZePGYuDQZAAA
|
||||
Rthw4fX29i5durStra2zqmrFZZc9NW7czwbbrki9J/+g8Ab+A2/wAt6rg3m3o7R0z+jRRd4dGjOmbdy4
|
||||
qk9+8uja5w8cOFCMKgYOTQYAYIQNF17hUEfHTx97rLu7u6uq6tkrr3z60kt/NmZMEXn/U3gDt1D5gwt4
|
||||
W0tKdpWX7ysvbx8zpnXcuOorrjj6wgvF9mJIMWp4KAAAI+73hVfYv39/0WdtbW2nd++umX3Lk5/4xNMX
|
||||
X/xEeflTf1x4r5SUNIwa1TS6bO+YMXsuvviFiy5aX3Frb2trsbHYXgwZHgcAwPnwR4VXONTRsXTp0o21
|
||||
tW/19b3e2LjtBz989vIrnrrkkhUXXVRVXr6mtPSl0tKNpaX1Y8asGzt25cUX137960fWPl8sLrYUG129
|
||||
AwA47/608Aq9vb01NTVLliypq6vr7enp6ez85YYNLT/5ycvf/EbV1K+suHriuopbN3//+x2Vy063tfWe
|
||||
OdNQX18sLrb43zsAgI+CP1N4Qzo7O1dXVz+yeHFlZWVjY2NXV9fZ/v4PBhUPiqfFi8VbxYJimRujAAB8
|
||||
dPzFwhvS09Ozc8eO6qqqJY8++vCiRQ8tXFgcxYPiafFi8ZZvrQAA+Kj5PwoPAID/dxQeAEAahQcAkEbh
|
||||
AQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCk
|
||||
UXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgA
|
||||
AGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkU
|
||||
HgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBA
|
||||
GoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUH
|
||||
AJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG
|
||||
4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEA
|
||||
pFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4
|
||||
AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABp
|
||||
FB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4A
|
||||
QBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqF
|
||||
BwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQ
|
||||
RuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEB
|
||||
AKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRR
|
||||
eAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAA
|
||||
aRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQe
|
||||
AEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAa
|
||||
hQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcA
|
||||
kEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbh
|
||||
AQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCk
|
||||
UXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgA
|
||||
AGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkU
|
||||
HgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBA
|
||||
GoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUH
|
||||
AJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG
|
||||
4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEA
|
||||
pFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4
|
||||
AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABp
|
||||
FB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4A
|
||||
QBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqF
|
||||
BwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQ
|
||||
RuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEB
|
||||
AKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRR
|
||||
eAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAA
|
||||
aRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQe
|
||||
AEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAa
|
||||
hQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcA
|
||||
kEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbh
|
||||
AQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCk
|
||||
UXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgA
|
||||
AGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkU
|
||||
HgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBA
|
||||
GoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUH
|
||||
AJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG
|
||||
4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEA
|
||||
pFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4
|
||||
AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABp
|
||||
FB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4A
|
||||
QBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqF
|
||||
BwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQ
|
||||
RuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEB
|
||||
AKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRR
|
||||
eAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAA
|
||||
Wc6d+2/gNp2ukwoN8QAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOvwAA
|
||||
Dr8BOAVTJAAACG1JREFUSEu1lmlQW9cVx/mG0GIZZCczGcZjvCQEiLHNYpABAQKEwBjTeqmXCfkQ3Mx4
|
||||
xp58SlMnY/dLmxl3TJIZu3UhBAQBsYNsisBoByS0C21oMUhCYIQkbFzqxo4n9C89TElqt/3SM1dv3tM7
|
||||
93fOPfecc1/M+n+UQCCgnJzs5PPrb9787OrVK5cvY+AGj/gTr6Cwofoaea0Bh8PR1dl5/do1Ho8nlUqd
|
||||
TudKOPxDVHCDR/yJV1CAGpQ3pv2bvMJAMBgcGBior6+XSCQhPDhm/CKRu4Nvv3Xb8vsv9J9fm77xRwev
|
||||
xSuWLjscoeVlqEEZU6C7gdgiPzcwY7ffunVrRCh8FAotyBXevt6lb5o8V654L1zw/eKkt+bEXHW1q7ra
|
||||
dqLGUFOjqq01t7R4VMqHfj+mYCKmb4Beyk8MmEymr7780mw2h4zGuc6uEI83X1e3WFPjr672V1V7qqrm
|
||||
qqrcVVUu7rGZigobl2PhcDRcrqKy0njz5pJWh4mYDsgGLir/MgDjeO31en1DQ/72joVPfrMQRfuOHwd6
|
||||
9tgxd2Wli8u1l5dbORxzaamptNTAZmuLizUslpzN/mtpmbu3F9MB2bqODQMIHxYIFyL0pibfxV8vnjju
|
||||
KStz5ue7S0oi6PJyB6fcWlZmZpeY2GxDcbGOXaRiMifSDymyshR5eeL8/CFWobunBxCgNvdjwwC2CEFE
|
||||
ZFz19fMffQSvXYUFgbq6fwgE/rq66aO59rIyC5tNoDWFhWoWazwjQ3P8uK+pyXD+wmjKu2PZ2cKc3MEC
|
||||
VkCjAQpAghwxgCRDGmBXbbdvz1+96qmschUVLdbWrj98GFEJBNznzqkzMgj0VH6+qiBffvDgVHn5A6l0
|
||||
diXkMRqVJ0/dTU6+d/jwYGbm8C9PAgUgkbsRA0hksVi8qJ5yffrbuWPHQPecObO+vByhE/JwyX7+/OSB
|
||||
A1MFBRNMpuxAmopb8UAud87PW6xWs9Pp0Kjvczi9+/f3pKb1Hc6YafsOuQsspsagFFEswUDA2dHh+uAD
|
||||
F6fUlpc3e+ZX60+eEHBCvl9aspw/L0pOFqWmTHC5LoXC6fdbrVajXr+wtLS2ttbP5bYnJbWnpHSmpgnP
|
||||
nEJ9AAt4DModBbnscBouXbKXlNjYRWZsYGam68MP1x89AvrFixdPnz5de/HisdenPXFCVlgI+ozXa7VY
|
||||
DAZDhP7kCa+w8A6VyqPTm+n0b+j0zvSDSyZTa2sr4DFoKSh676jIcOq0pahomsXSs1ja/HxFSpr5/fef
|
||||
BoPP19dXV1fRHgKPHy9OT9tEIsQEaPXUlG9h4W+rq81M5p+p1FYK5VsKpSk62hITzY2NMpkM8Bi0LTQW
|
||||
a0Ojjss15hfo8/PUeXnIP2XuUQREe+FCeGEhvLa2uLAwOzvrcLvNDodOp1OpVF6CzmLB9zYyuYVCaY4O
|
||||
mOExGNJLl4AFPAatEd5prl/TFhUSaBUzZzwnR56dLc3NHd6bJK+omNVo3B6PzWYzT0/rdbqpqSmvz/dk
|
||||
dbW1uJigEwOLwICllm3bBtglwAIeg/aLBik+e1Z99Cjo40eOyLOypNnZYuT13r2DcXEdZLKYy7XYbCaz
|
||||
mfBdMT4eDofv1tYiMnjb/nLABnFto1Da33sPWMAjBp49eya7eDHiNdCZmeKsrLGDB+8xGL1xcXwy+e6u
|
||||
XcauLjQarVYboSsUMrlcMj6uEQjupaYCBx2Mzq0DBg4dev78ecQAVhFcDio/+1ySkyMGPTtLmJIyEBfX
|
||||
E6UPJiYaBQKt3a7RaFRKpQIGJidlEolIJBqbmNALhUPvvgs1KMOb/pdjgErt53DCoVAkRNgH+4zDdOfO
|
||||
/ZwclPtwWhpU4QVc609MNAwOamw2jVarVCq9fv9KKDTc0zOGFYjFyL1Jg8EqkwnfeQcGBNFxD4NEGtq2
|
||||
TXL5cqRBYJORSShj9/3R4VymMD2doCOUPTt3Gnp7QVdrNJOTk6A/Wllpycnh7dkj7O6RIlhKJbbEgf6p
|
||||
Vo3t2wfuCIk0SiLdJ5G6t9GtvBZ4EElT1EJzS7PfbrvLZPYmJGC98L2LwTB0d0foajXoniidyEjY7k5O
|
||||
lggE+pmZGZvN4/GE//40bDJJE3eJY2MlsbHS2Niu3UkBq7m1lRcpNKJVLMzPC8rK+Dt2gI5c7kxKUotE
|
||||
KqNxYmLCOz//KBxuKihAzoBO7OdAaqpOKvUtL6Mtf//jj8hIFM14bKwyjjROp2u++APO2t9dvx5pFWgG
|
||||
6EroTdaGhvbExBYqFZXyFwqlIytLPDQ0t7gIemNe3p+i+Q4DoCOMyIKht9+e1et/QJ2vrIyWl4+RSDoy
|
||||
WU+hdMfHe6RiifRls8Nvs10Plpa2vfFGA4WCUNxGb8nIMI6MNDBzb1GpKB8YQNZ3w/3oTg6TSPL0dF9f
|
||||
n6SyEsExUShmKlXL2DFYXv7zdg0hDpwltbp13/5vGQz4CyjGV9Er2gviBgOID9xHtghJJLiMcOM6ERsL
|
||||
tJ1GMyUkdOzeHdTpRkdGfnLgQDaPTAef37Z7dwOD8XUUDUtYzaaBSPSj7iNVQJ8kk7VxcaDP0GhmBoP/
|
||||
1luzvX0Wi+UVRyZk89B38vnNe/c27tz5NY0GG5sGIrm7xX0FiTRFpRqpVBuNZmAwOvfsme3vf+2hT8jm
|
||||
ZwtihW515803G+PjkTzYla0GkOxIR1UcRU+jaePj+7dvF3ArggbDf/lsIQTGsUDiw2tOKh3/5NPmpD0N
|
||||
CQlt27fzqdQeMvkemTyC9kejDdLp7fHxwtOn3b19UP6fPrwIQfiwRUgDNBwcpQGH48HQkO7GjeFzZ/m5
|
||||
R9rSUge5FbKPP7bzWpbM5iA+HcViKGPKZty3yisMEIIkQyL/Xz5+twoWgHJHS0HbQmtE+8XADR7xJ15B
|
||||
YUP1lbK+/k8KJ49ubHudCAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
-179
@@ -1,179 +0,0 @@
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
partial class SettingsDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.commonGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.loginRequiredCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.languageComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.languageLabel = new System.Windows.Forms.Label();
|
||||
this.connStrForTracingGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.tracingDBConnStringTextBox = new System.Windows.Forms.TextBox();
|
||||
this.connStrForUsersGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.usersDBConnStringTextBox = new System.Windows.Forms.TextBox();
|
||||
this.saveButton = new System.Windows.Forms.Button();
|
||||
this.cancelButton = new System.Windows.Forms.Button();
|
||||
this.commonGroupBox.SuspendLayout();
|
||||
this.connStrForTracingGroupBox.SuspendLayout();
|
||||
this.connStrForUsersGroupBox.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// commonGroupBox
|
||||
//
|
||||
this.commonGroupBox.Controls.Add(this.languageComboBox);
|
||||
this.commonGroupBox.Controls.Add(this.languageLabel);
|
||||
this.commonGroupBox.Location = new System.Drawing.Point(12, 161);
|
||||
this.commonGroupBox.Name = "commonGroupBox";
|
||||
this.commonGroupBox.Size = new System.Drawing.Size(418, 53);
|
||||
this.commonGroupBox.TabIndex = 16;
|
||||
this.commonGroupBox.TabStop = false;
|
||||
//
|
||||
// loginRequiredCheckBox
|
||||
//
|
||||
this.loginRequiredCheckBox.AutoSize = true;
|
||||
this.loginRequiredCheckBox.Location = new System.Drawing.Point(19, 46);
|
||||
this.loginRequiredCheckBox.Name = "loginRequiredCheckBox";
|
||||
this.loginRequiredCheckBox.Size = new System.Drawing.Size(114, 17);
|
||||
this.loginRequiredCheckBox.TabIndex = 2;
|
||||
this.loginRequiredCheckBox.Text = "User login required";
|
||||
this.loginRequiredCheckBox.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// languageComboBox
|
||||
//
|
||||
this.languageComboBox.FormattingEnabled = true;
|
||||
this.languageComboBox.Location = new System.Drawing.Point(292, 19);
|
||||
this.languageComboBox.Name = "languageComboBox";
|
||||
this.languageComboBox.Size = new System.Drawing.Size(80, 21);
|
||||
this.languageComboBox.TabIndex = 1;
|
||||
//
|
||||
// languageLabel
|
||||
//
|
||||
this.languageLabel.AutoSize = true;
|
||||
this.languageLabel.Location = new System.Drawing.Point(19, 23);
|
||||
this.languageLabel.Name = "languageLabel";
|
||||
this.languageLabel.Size = new System.Drawing.Size(134, 13);
|
||||
this.languageLabel.TabIndex = 0;
|
||||
this.languageLabel.Text = "Language, Sprache, Jazyk";
|
||||
//
|
||||
// connStrForTracingGroupBox
|
||||
//
|
||||
this.connStrForTracingGroupBox.Controls.Add(this.tracingDBConnStringTextBox);
|
||||
this.connStrForTracingGroupBox.Location = new System.Drawing.Point(12, 14);
|
||||
this.connStrForTracingGroupBox.Name = "connStrForTracingGroupBox";
|
||||
this.connStrForTracingGroupBox.Size = new System.Drawing.Size(660, 50);
|
||||
this.connStrForTracingGroupBox.TabIndex = 17;
|
||||
this.connStrForTracingGroupBox.TabStop = false;
|
||||
this.connStrForTracingGroupBox.Text = "Connection string for production tracing records";
|
||||
//
|
||||
// tracingDBConnStringTextBox
|
||||
//
|
||||
this.tracingDBConnStringTextBox.Location = new System.Drawing.Point(19, 18);
|
||||
this.tracingDBConnStringTextBox.Name = "tracingDBConnStringTextBox";
|
||||
this.tracingDBConnStringTextBox.Size = new System.Drawing.Size(617, 20);
|
||||
this.tracingDBConnStringTextBox.TabIndex = 0;
|
||||
//
|
||||
// connStrForUsersGroupBox
|
||||
//
|
||||
this.connStrForUsersGroupBox.Controls.Add(this.loginRequiredCheckBox);
|
||||
this.connStrForUsersGroupBox.Controls.Add(this.usersDBConnStringTextBox);
|
||||
this.connStrForUsersGroupBox.Location = new System.Drawing.Point(12, 73);
|
||||
this.connStrForUsersGroupBox.Name = "connStrForUsersGroupBox";
|
||||
this.connStrForUsersGroupBox.Size = new System.Drawing.Size(660, 70);
|
||||
this.connStrForUsersGroupBox.TabIndex = 18;
|
||||
this.connStrForUsersGroupBox.TabStop = false;
|
||||
this.connStrForUsersGroupBox.Text = "Connection string for central DB of users";
|
||||
//
|
||||
// usersDBConnStringTextBox
|
||||
//
|
||||
this.usersDBConnStringTextBox.Location = new System.Drawing.Point(19, 18);
|
||||
this.usersDBConnStringTextBox.Name = "usersDBConnStringTextBox";
|
||||
this.usersDBConnStringTextBox.Size = new System.Drawing.Size(617, 20);
|
||||
this.usersDBConnStringTextBox.TabIndex = 0;
|
||||
//
|
||||
// saveButton
|
||||
//
|
||||
this.saveButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.saveButton.Location = new System.Drawing.Point(475, 166);
|
||||
this.saveButton.Name = "saveButton";
|
||||
this.saveButton.Size = new System.Drawing.Size(74, 47);
|
||||
this.saveButton.TabIndex = 19;
|
||||
this.saveButton.Text = "Save";
|
||||
this.saveButton.UseVisualStyleBackColor = true;
|
||||
this.saveButton.Click += new System.EventHandler(this.saveButton_Click);
|
||||
//
|
||||
// cancelButton
|
||||
//
|
||||
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cancelButton.Location = new System.Drawing.Point(577, 166);
|
||||
this.cancelButton.Name = "cancelButton";
|
||||
this.cancelButton.Size = new System.Drawing.Size(71, 47);
|
||||
this.cancelButton.TabIndex = 20;
|
||||
this.cancelButton.Text = "Cancel";
|
||||
this.cancelButton.UseVisualStyleBackColor = true;
|
||||
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
|
||||
//
|
||||
// SettingsDlg
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(688, 237);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.cancelButton);
|
||||
this.Controls.Add(this.saveButton);
|
||||
this.Controls.Add(this.connStrForUsersGroupBox);
|
||||
this.Controls.Add(this.connStrForTracingGroupBox);
|
||||
this.Controls.Add(this.commonGroupBox);
|
||||
this.Name = "SettingsDlg";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Settings";
|
||||
this.Load += new System.EventHandler(this.SettingsDlg_Load);
|
||||
this.commonGroupBox.ResumeLayout(false);
|
||||
this.commonGroupBox.PerformLayout();
|
||||
this.connStrForTracingGroupBox.ResumeLayout(false);
|
||||
this.connStrForTracingGroupBox.PerformLayout();
|
||||
this.connStrForUsersGroupBox.ResumeLayout(false);
|
||||
this.connStrForUsersGroupBox.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox commonGroupBox;
|
||||
private System.Windows.Forms.ComboBox languageComboBox;
|
||||
private System.Windows.Forms.Label languageLabel;
|
||||
private System.Windows.Forms.CheckBox loginRequiredCheckBox;
|
||||
private System.Windows.Forms.GroupBox connStrForTracingGroupBox;
|
||||
private System.Windows.Forms.TextBox tracingDBConnStringTextBox;
|
||||
private System.Windows.Forms.GroupBox connStrForUsersGroupBox;
|
||||
private System.Windows.Forms.TextBox usersDBConnStringTextBox;
|
||||
private System.Windows.Forms.Button saveButton;
|
||||
private System.Windows.Forms.Button cancelButton;
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
public partial class SettingsDlg : Form
|
||||
{
|
||||
private LocalSettings ls;
|
||||
|
||||
public SettingsDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public SettingsDlg(LocalSettings localSettings)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.ls = localSettings;
|
||||
}
|
||||
|
||||
void Localize()
|
||||
{
|
||||
Text = Strings.Settings;
|
||||
languageLabel.Text = Strings.Language;
|
||||
loginRequiredCheckBox.Text = Strings.User_login_is_required;
|
||||
saveButton.Text = Strings.Save;
|
||||
cancelButton.Text = Strings.Cancel;
|
||||
connStrForTracingGroupBox.Text = Strings.Connection_string_tracing_DB;
|
||||
connStrForUsersGroupBox.Text = Strings.Connection_string_users_DB;
|
||||
}
|
||||
|
||||
private void SettingsDlg_Load(object sender, EventArgs e)
|
||||
{
|
||||
Localize();
|
||||
|
||||
if (ls == null) return;
|
||||
|
||||
languageComboBox.Items.Add("EN");
|
||||
languageComboBox.Items.Add("ZH_CN");
|
||||
languageComboBox.Items.Add("DE");
|
||||
languageComboBox.Items.Add("SK");
|
||||
languageComboBox.Text = ls.Language;
|
||||
|
||||
loginRequiredCheckBox.Checked = ls.IsUserLoginRequired;
|
||||
|
||||
tracingDBConnStringTextBox.Text = ls.ConnectionString;
|
||||
usersDBConnStringTextBox.Text = ls.UsersDBConnString;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies UI content
|
||||
/// </summary>
|
||||
/// <returns>None-empty string (message) when invalid</returns>
|
||||
string IsUIContentValid()
|
||||
{
|
||||
if (!languageComboBox.Items.Contains(languageComboBox.Text))
|
||||
{
|
||||
return "Invalid language";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates settings, checks for differences compared to previous setrtings
|
||||
/// </summary>
|
||||
/// <returns>true when settings are different</returns>
|
||||
bool UpdateSettings()
|
||||
{
|
||||
if (ls == null) return false;
|
||||
|
||||
bool isDifferent = false;
|
||||
|
||||
if (ls.Language != languageComboBox.Text)
|
||||
{
|
||||
ls.Language = languageComboBox.Text;
|
||||
isDifferent = true;
|
||||
}
|
||||
|
||||
if (ls.IsUserLoginRequired != loginRequiredCheckBox.Checked)
|
||||
{
|
||||
ls.IsUserLoginRequired = loginRequiredCheckBox.Checked;
|
||||
isDifferent = true;
|
||||
}
|
||||
|
||||
if (ls.ConnectionString != tracingDBConnStringTextBox.Text)
|
||||
{
|
||||
ls.ConnectionString = tracingDBConnStringTextBox.Text;
|
||||
isDifferent = true;
|
||||
}
|
||||
|
||||
if (ls.UsersDBConnString != usersDBConnStringTextBox.Text)
|
||||
{
|
||||
ls.UsersDBConnString = usersDBConnStringTextBox.Text;
|
||||
isDifferent = true;
|
||||
}
|
||||
|
||||
return isDifferent;
|
||||
}
|
||||
|
||||
private void saveButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
string message = IsUIContentValid();
|
||||
if (string.IsNullOrEmpty(message))
|
||||
{
|
||||
UpdateSettings();
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(message);
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
-139
@@ -1,139 +0,0 @@
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
partial class StatisticsDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.statisticsListView = new System.Windows.Forms.ListView();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.exportButton = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.statisticsListView);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(572, 409);
|
||||
this.splitContainer1.SplitterDistance = 320;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// statisticsListView
|
||||
//
|
||||
this.statisticsListView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.statisticsListView.GridLines = true;
|
||||
this.statisticsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable;
|
||||
this.statisticsListView.Location = new System.Drawing.Point(0, 0);
|
||||
this.statisticsListView.Name = "statisticsListView";
|
||||
this.statisticsListView.Size = new System.Drawing.Size(572, 320);
|
||||
this.statisticsListView.TabIndex = 0;
|
||||
this.statisticsListView.UseCompatibleStateImageBehavior = false;
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer2.Name = "splitContainer2";
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.exportButton);
|
||||
this.splitContainer2.Panel2.Controls.Add(this.okButton);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(572, 85);
|
||||
this.splitContainer2.SplitterDistance = 250;
|
||||
this.splitContainer2.TabIndex = 0;
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Location = new System.Drawing.Point(195, 22);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(102, 41);
|
||||
this.okButton.TabIndex = 0;
|
||||
this.okButton.Text = "OK";
|
||||
this.okButton.UseVisualStyleBackColor = true;
|
||||
this.okButton.Click += new System.EventHandler(this.okButton_Click);
|
||||
//
|
||||
// exportButton
|
||||
//
|
||||
this.exportButton.Location = new System.Drawing.Point(74, 22);
|
||||
this.exportButton.Name = "exportButton";
|
||||
this.exportButton.Size = new System.Drawing.Size(102, 41);
|
||||
this.exportButton.TabIndex = 1;
|
||||
this.exportButton.Text = "Export";
|
||||
this.exportButton.UseVisualStyleBackColor = true;
|
||||
this.exportButton.Click += new System.EventHandler(this.exportButton_Click);
|
||||
//
|
||||
// StatisticsDlg
|
||||
//
|
||||
this.AcceptButton = this.okButton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(572, 409);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Name = "StatisticsDlg";
|
||||
this.Text = "StatisticsDlg";
|
||||
this.Load += new System.EventHandler(this.StatisticsDlg_Load);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.ListView statisticsListView;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private System.Windows.Forms.Button okButton;
|
||||
private System.Windows.Forms.Button exportButton;
|
||||
}
|
||||
}
|
||||
@@ -1,232 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
public partial class StatisticsDlg : Form
|
||||
{
|
||||
IList<object[]> results;
|
||||
IList<ItemSpec> items;
|
||||
|
||||
bool twoDim;
|
||||
int rowItemIx;
|
||||
int columnItemIx;
|
||||
bool filterEnabled;
|
||||
int filteredItemIx;
|
||||
string filteredValue;
|
||||
|
||||
ItemSpec rowItem;
|
||||
ItemSpec columnItem;
|
||||
ItemSpec filteredItem;
|
||||
|
||||
IList<string> rowValues;
|
||||
IList<string> columnValues;
|
||||
int[,] occurances;
|
||||
|
||||
public StatisticsDlg(QueryResults results, bool twoDim, int rowItemIx, int columnItemIx, bool filterEnabled, int filteredItemIx, string filteredValue)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
Text = results.Description;
|
||||
okButton.Text = Strings.OkBtnText;
|
||||
|
||||
this.results = results.Results;
|
||||
this.items = results.ProjectedItems;
|
||||
|
||||
this.twoDim = twoDim;
|
||||
this.rowItemIx = rowItemIx;
|
||||
this.columnItemIx = columnItemIx;
|
||||
this.filterEnabled = filterEnabled;
|
||||
this.filteredItemIx = filteredItemIx;
|
||||
this.filteredValue = filteredValue;
|
||||
|
||||
rowItem = items[rowItemIx].Clone();
|
||||
if (twoDim)
|
||||
{
|
||||
columnItem = items[columnItemIx].Clone();
|
||||
}
|
||||
if (filterEnabled)
|
||||
{
|
||||
filteredItem = items[filteredItemIx].Clone();
|
||||
}
|
||||
|
||||
Localize();
|
||||
}
|
||||
|
||||
private void StatisticsDlg_Load(object sender, EventArgs e)
|
||||
{
|
||||
Calculate();
|
||||
}
|
||||
|
||||
void Localize()
|
||||
{
|
||||
okButton.Text = Strings.OkBtnText;
|
||||
exportButton.Text = Strings.Export;
|
||||
}
|
||||
|
||||
bool Calculate()
|
||||
{
|
||||
try
|
||||
{
|
||||
rowValues = new List<string>();
|
||||
columnValues = new List<string>();
|
||||
|
||||
///
|
||||
/// Find discrete values of rows and columns
|
||||
///
|
||||
foreach (var result in results)
|
||||
{
|
||||
if (!filterEnabled || filteredItem.Print(result[filteredItemIx]).Equals(filteredValue))
|
||||
{
|
||||
string value = rowItem.Print(result[rowItemIx]);
|
||||
if (!rowValues.Contains(value)) rowValues.Add(value);
|
||||
|
||||
if (twoDim)
|
||||
{
|
||||
value = columnItem.Print(result[columnItemIx]);
|
||||
if (!columnValues.Contains(value)) columnValues.Add(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
/// Sort discrete values of rows and columns
|
||||
///
|
||||
int dummy;
|
||||
bool rowValuesAreInts = true;
|
||||
foreach (var rVal in rowValues) if (!int.TryParse(rVal, out dummy)) { rowValuesAreInts = false; break; }
|
||||
if (rowValuesAreInts) rowValues = rowValues.OrderBy(x => int.Parse(x)).ToList();
|
||||
else rowValues = rowValues.OrderBy(x => x).ToList();
|
||||
|
||||
if (twoDim)
|
||||
{
|
||||
bool colValuesAreInts = true;
|
||||
foreach (var cVal in columnValues) if (!int.TryParse(cVal, out dummy)) { colValuesAreInts = false; break; }
|
||||
if (colValuesAreInts) columnValues = columnValues.OrderBy(x => int.Parse(x)).ToList();
|
||||
else columnValues = columnValues.OrderBy(x => x).ToList();
|
||||
}
|
||||
|
||||
///
|
||||
/// Calculate occurances
|
||||
///
|
||||
int columns = Math.Max(1, columnValues.Count);
|
||||
occurances = new int[rowValues.Count, columns];
|
||||
|
||||
foreach (var result in results)
|
||||
{
|
||||
if (!filterEnabled || filteredItem.Print(result[filteredItemIx]).Equals(filteredValue))
|
||||
{
|
||||
for (int row = 0; row < rowValues.Count; row++)
|
||||
{
|
||||
if (twoDim)
|
||||
{
|
||||
for (int column = 0; column < columns; column++)
|
||||
{
|
||||
if (rowItem.Print(result[rowItemIx]).Equals(rowValues[row]) && columnItem.Print(result[columnItemIx]).Equals(columnValues[column]))
|
||||
{
|
||||
occurances[row, column]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (rowItem.Print(result[rowItemIx]).Equals(rowValues[row])) occurances[row, 0]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///
|
||||
/// Update ListBox
|
||||
///
|
||||
statisticsListView.View = View.Details;
|
||||
statisticsListView.GridLines = true;
|
||||
statisticsListView.FullRowSelect = true;
|
||||
|
||||
statisticsListView.Columns.Add((twoDim ? string.Empty : rowItem.Caption), 200);
|
||||
for (int column = 0; column < columns; column++)
|
||||
{
|
||||
statisticsListView.Columns.Add((twoDim ? columnValues[column] : Strings.Count), 70);
|
||||
}
|
||||
|
||||
for (int row = 0; row < rowValues.Count; row++)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem(rowValues[row]);
|
||||
for (int column = 0; column < columns; column++) lvi.SubItems.Add(occurances[row, column].ToString());
|
||||
statisticsListView.Items.Add(lvi);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
MessageBox.Show(exc.Message, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void exportButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (rowValues == null || columnValues == null || occurances == null) return;
|
||||
|
||||
SaveFileDialog dlg = new SaveFileDialog();
|
||||
dlg.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*";
|
||||
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
//IList<ItemSpec> items = currentQR.ProjectedItems;
|
||||
|
||||
try
|
||||
{
|
||||
using (TextWriter writer = new StreamWriter(dlg.FileName, false, Encoding.UTF8))
|
||||
{
|
||||
if (twoDim)
|
||||
{
|
||||
/// Write column headers
|
||||
for (int i = 0; i < columnValues.Count; i++)
|
||||
{
|
||||
writer.Write(string.Format(";\"{0}\"", columnValues[i]));
|
||||
}
|
||||
writer.WriteLine();
|
||||
}
|
||||
else
|
||||
{
|
||||
writer.WriteLine(string.Format("\"{0}\";\"{1}\"", rowItem.Caption, Strings.Count));
|
||||
}
|
||||
|
||||
int nrColumns = Math.Max(1, columnValues.Count);
|
||||
|
||||
/// Write rows, row header first
|
||||
for (int j = 0; j < rowValues.Count; j++)
|
||||
{
|
||||
writer.Write(string.Format("\"{0}\"", rowValues[j]));
|
||||
for (int i = 0; i < nrColumns; i++)
|
||||
{
|
||||
writer.Write(string.Format(";{0}", occurances[j,i]));
|
||||
}
|
||||
writer.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
MessageBox.Show(exc.Message, Strings.Error_exporting_results, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,194 +0,0 @@
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
partial class StatisticsOptionsDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.cancelButton = new System.Windows.Forms.Button();
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.rowsGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.rowsComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.columnsGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.columnsComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.twoDimCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.filterCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.filterGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.filteredValueTextBox = new System.Windows.Forms.TextBox();
|
||||
this.filteredItemComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.rowsGroupBox.SuspendLayout();
|
||||
this.columnsGroupBox.SuspendLayout();
|
||||
this.filterGroupBox.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// cancelButton
|
||||
//
|
||||
this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.cancelButton.Location = new System.Drawing.Point(353, 268);
|
||||
this.cancelButton.Name = "cancelButton";
|
||||
this.cancelButton.Size = new System.Drawing.Size(95, 38);
|
||||
this.cancelButton.TabIndex = 9;
|
||||
this.cancelButton.Text = "Cancel";
|
||||
this.cancelButton.UseVisualStyleBackColor = true;
|
||||
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.okButton.Location = new System.Drawing.Point(242, 268);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(95, 38);
|
||||
this.okButton.TabIndex = 8;
|
||||
this.okButton.Text = "OK";
|
||||
this.okButton.UseVisualStyleBackColor = true;
|
||||
this.okButton.Click += new System.EventHandler(this.okButton_Click);
|
||||
//
|
||||
// rowsGroupBox
|
||||
//
|
||||
this.rowsGroupBox.Controls.Add(this.rowsComboBox);
|
||||
this.rowsGroupBox.Location = new System.Drawing.Point(30, 35);
|
||||
this.rowsGroupBox.Name = "rowsGroupBox";
|
||||
this.rowsGroupBox.Size = new System.Drawing.Size(250, 56);
|
||||
this.rowsGroupBox.TabIndex = 10;
|
||||
this.rowsGroupBox.TabStop = false;
|
||||
this.rowsGroupBox.Text = "Rows";
|
||||
//
|
||||
// rowsComboBox
|
||||
//
|
||||
this.rowsComboBox.FormattingEnabled = true;
|
||||
this.rowsComboBox.Location = new System.Drawing.Point(32, 21);
|
||||
this.rowsComboBox.Name = "rowsComboBox";
|
||||
this.rowsComboBox.Size = new System.Drawing.Size(185, 21);
|
||||
this.rowsComboBox.TabIndex = 0;
|
||||
//
|
||||
// columnsGroupBox
|
||||
//
|
||||
this.columnsGroupBox.Controls.Add(this.columnsComboBox);
|
||||
this.columnsGroupBox.Location = new System.Drawing.Point(30, 97);
|
||||
this.columnsGroupBox.Name = "columnsGroupBox";
|
||||
this.columnsGroupBox.Size = new System.Drawing.Size(250, 56);
|
||||
this.columnsGroupBox.TabIndex = 11;
|
||||
this.columnsGroupBox.TabStop = false;
|
||||
this.columnsGroupBox.Text = "Columns";
|
||||
//
|
||||
// columnsComboBox
|
||||
//
|
||||
this.columnsComboBox.FormattingEnabled = true;
|
||||
this.columnsComboBox.Location = new System.Drawing.Point(32, 20);
|
||||
this.columnsComboBox.Name = "columnsComboBox";
|
||||
this.columnsComboBox.Size = new System.Drawing.Size(185, 21);
|
||||
this.columnsComboBox.TabIndex = 1;
|
||||
//
|
||||
// twoDimCheckBox
|
||||
//
|
||||
this.twoDimCheckBox.AutoSize = true;
|
||||
this.twoDimCheckBox.Location = new System.Drawing.Point(30, 12);
|
||||
this.twoDimCheckBox.Name = "twoDimCheckBox";
|
||||
this.twoDimCheckBox.Size = new System.Drawing.Size(40, 17);
|
||||
this.twoDimCheckBox.TabIndex = 12;
|
||||
this.twoDimCheckBox.Text = "2D";
|
||||
this.twoDimCheckBox.UseVisualStyleBackColor = true;
|
||||
this.twoDimCheckBox.CheckedChanged += new System.EventHandler(this.twoDimCheckBox_CheckedChanged);
|
||||
//
|
||||
// filterCheckBox
|
||||
//
|
||||
this.filterCheckBox.AutoSize = true;
|
||||
this.filterCheckBox.Location = new System.Drawing.Point(30, 169);
|
||||
this.filterCheckBox.Name = "filterCheckBox";
|
||||
this.filterCheckBox.Size = new System.Drawing.Size(48, 17);
|
||||
this.filterCheckBox.TabIndex = 13;
|
||||
this.filterCheckBox.Text = "Filter";
|
||||
this.filterCheckBox.UseVisualStyleBackColor = true;
|
||||
this.filterCheckBox.CheckedChanged += new System.EventHandler(this.filterCheckBox_CheckedChanged);
|
||||
//
|
||||
// filterGroupBox
|
||||
//
|
||||
this.filterGroupBox.Controls.Add(this.filteredValueTextBox);
|
||||
this.filterGroupBox.Controls.Add(this.filteredItemComboBox);
|
||||
this.filterGroupBox.Location = new System.Drawing.Point(30, 192);
|
||||
this.filterGroupBox.Name = "filterGroupBox";
|
||||
this.filterGroupBox.Size = new System.Drawing.Size(418, 56);
|
||||
this.filterGroupBox.TabIndex = 14;
|
||||
this.filterGroupBox.TabStop = false;
|
||||
this.filterGroupBox.Text = "Rows";
|
||||
//
|
||||
// filteredValueTextBox
|
||||
//
|
||||
this.filteredValueTextBox.Location = new System.Drawing.Point(239, 21);
|
||||
this.filteredValueTextBox.Name = "filteredValueTextBox";
|
||||
this.filteredValueTextBox.Size = new System.Drawing.Size(158, 20);
|
||||
this.filteredValueTextBox.TabIndex = 1;
|
||||
//
|
||||
// filteredItemComboBox
|
||||
//
|
||||
this.filteredItemComboBox.FormattingEnabled = true;
|
||||
this.filteredItemComboBox.Location = new System.Drawing.Point(32, 21);
|
||||
this.filteredItemComboBox.Name = "filteredItemComboBox";
|
||||
this.filteredItemComboBox.Size = new System.Drawing.Size(185, 21);
|
||||
this.filteredItemComboBox.TabIndex = 0;
|
||||
//
|
||||
// StatisticsOptionsDlg
|
||||
//
|
||||
this.AcceptButton = this.okButton;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.cancelButton;
|
||||
this.ClientSize = new System.Drawing.Size(482, 322);
|
||||
this.Controls.Add(this.filterGroupBox);
|
||||
this.Controls.Add(this.filterCheckBox);
|
||||
this.Controls.Add(this.columnsGroupBox);
|
||||
this.Controls.Add(this.twoDimCheckBox);
|
||||
this.Controls.Add(this.rowsGroupBox);
|
||||
this.Controls.Add(this.cancelButton);
|
||||
this.Controls.Add(this.okButton);
|
||||
this.Name = "StatisticsOptionsDlg";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "StatisticsOptionsDlg";
|
||||
this.rowsGroupBox.ResumeLayout(false);
|
||||
this.columnsGroupBox.ResumeLayout(false);
|
||||
this.filterGroupBox.ResumeLayout(false);
|
||||
this.filterGroupBox.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button cancelButton;
|
||||
private System.Windows.Forms.Button okButton;
|
||||
private System.Windows.Forms.GroupBox rowsGroupBox;
|
||||
private System.Windows.Forms.ComboBox rowsComboBox;
|
||||
private System.Windows.Forms.GroupBox columnsGroupBox;
|
||||
private System.Windows.Forms.ComboBox columnsComboBox;
|
||||
private System.Windows.Forms.CheckBox twoDimCheckBox;
|
||||
private System.Windows.Forms.CheckBox filterCheckBox;
|
||||
private System.Windows.Forms.GroupBox filterGroupBox;
|
||||
private System.Windows.Forms.TextBox filteredValueTextBox;
|
||||
private System.Windows.Forms.ComboBox filteredItemComboBox;
|
||||
}
|
||||
}
|
||||
@@ -1,176 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
public partial class StatisticsOptionsDlg : Form
|
||||
{
|
||||
public bool TwoDim;
|
||||
public int RowItemIx;
|
||||
public int ColumnItemIx;
|
||||
public bool FilterEnabled;
|
||||
public int FilteredItemIx;
|
||||
public string FilteredValue;
|
||||
|
||||
IList<ItemSpec> projectedItems;
|
||||
|
||||
public StatisticsOptionsDlg(IList<ItemSpec> projectedItems)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
Localize();
|
||||
|
||||
this.projectedItems = projectedItems;
|
||||
|
||||
TwoDim = Program.LocalSettings.TwoDim;
|
||||
twoDimCheckBox.Checked = TwoDim;
|
||||
columnsComboBox.Enabled = TwoDim;
|
||||
|
||||
FilterEnabled = Program.LocalSettings.FilterEnabled;
|
||||
filterCheckBox.Checked = FilterEnabled;
|
||||
filterGroupBox.Enabled = FilterEnabled;
|
||||
filteredValueTextBox.Text = Program.LocalSettings.FilteredValue;
|
||||
|
||||
RowItemIx = 0;
|
||||
rowsComboBox.Text = projectedItems[0].Caption;
|
||||
///
|
||||
ColumnItemIx = 0;
|
||||
columnsComboBox.Text = projectedItems[0].Caption;
|
||||
///
|
||||
FilteredItemIx = 0;
|
||||
filteredItemComboBox.Text = projectedItems[0].Caption;
|
||||
///
|
||||
for (int i = 1; i < projectedItems.Count; i++)
|
||||
{
|
||||
string columnCaption = projectedItems[i].Caption;
|
||||
|
||||
rowsComboBox.Items.Add(columnCaption);
|
||||
columnsComboBox.Items.Add(columnCaption);
|
||||
filteredItemComboBox.Items.Add(columnCaption);
|
||||
|
||||
if (columnCaption == Program.LocalSettings.RowItemID)
|
||||
{
|
||||
RowItemIx = i;
|
||||
rowsComboBox.Text = columnCaption;
|
||||
}
|
||||
|
||||
if (columnCaption == Program.LocalSettings.ColumnItemID)
|
||||
{
|
||||
ColumnItemIx = i;
|
||||
columnsComboBox.Text = columnCaption;
|
||||
}
|
||||
|
||||
if (columnCaption == Program.LocalSettings.FilteredItemId)
|
||||
{
|
||||
FilteredItemIx = i;
|
||||
filteredItemComboBox.Text = columnCaption;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Localize()
|
||||
{
|
||||
Text = Strings.Statistics;
|
||||
okButton.Text = Strings.OkBtnText;
|
||||
cancelButton.Text = Strings.Cancel;
|
||||
rowsGroupBox.Text = Strings.Rows;
|
||||
columnsGroupBox.Text = Strings.Columns;
|
||||
}
|
||||
|
||||
private void twoDimCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
columnsComboBox.Enabled = twoDimCheckBox.Checked;
|
||||
}
|
||||
|
||||
private void filterCheckBox_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
filterGroupBox.Enabled = filterCheckBox.Checked;
|
||||
}
|
||||
|
||||
private void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
TwoDim = twoDimCheckBox.Checked;
|
||||
|
||||
RowItemIx = -1; /// -1 = No selection
|
||||
|
||||
for (int i = 0; i < rowsComboBox.Items.Count; i++)
|
||||
{
|
||||
if (rowsComboBox.Text.Equals(rowsComboBox.Items[i]))
|
||||
{
|
||||
RowItemIx = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (TwoDim)
|
||||
{
|
||||
ColumnItemIx = -1; /// -1 = No selection
|
||||
|
||||
for (int i = 0; i < columnsComboBox.Items.Count; i++)
|
||||
{
|
||||
if (columnsComboBox.Text.Equals(columnsComboBox.Items[i]))
|
||||
{
|
||||
ColumnItemIx = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ColumnItemIx = 0;
|
||||
}
|
||||
|
||||
FilterEnabled = filterCheckBox.Checked;
|
||||
if (FilterEnabled)
|
||||
{
|
||||
FilteredItemIx = -1; /// -1 = No selection
|
||||
|
||||
for (int i = 0; i < filteredItemComboBox.Items.Count; i++)
|
||||
{
|
||||
if (filteredItemComboBox.Text.Equals(filteredItemComboBox.Items[i]))
|
||||
{
|
||||
FilteredItemIx = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FilteredItemIx = 0;
|
||||
}
|
||||
|
||||
if (RowItemIx == -1 || ColumnItemIx == -1)
|
||||
{
|
||||
MessageBox.Show(Strings.Error, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
DialogResult = DialogResult.Cancel;
|
||||
}
|
||||
|
||||
Program.LocalSettings.TwoDim = TwoDim;
|
||||
Program.LocalSettings.RowItemID = rowsComboBox.Text;
|
||||
if (TwoDim)
|
||||
{
|
||||
Program.LocalSettings.ColumnItemID = columnsComboBox.Text;
|
||||
}
|
||||
Program.LocalSettings.FilterEnabled = FilterEnabled;
|
||||
if (FilterEnabled)
|
||||
{
|
||||
Program.LocalSettings.FilteredItemId = filteredItemComboBox.Text;
|
||||
FilteredValue = filteredValueTextBox.Text;
|
||||
Program.LocalSettings.FilteredValue = FilteredValue;
|
||||
}
|
||||
Program.LocalSettings.Save();
|
||||
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void cancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,300 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using log4net;
|
||||
using Common.Forms;
|
||||
using SharedDatabase.Entities;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
public partial class TracingConfigDlg : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// ListViewEx columns
|
||||
/// </summary>
|
||||
enum Column
|
||||
{
|
||||
Item,
|
||||
Caption,
|
||||
Format,
|
||||
Precision,
|
||||
Width,
|
||||
Count,
|
||||
}
|
||||
Control[] editors;
|
||||
|
||||
|
||||
public IList<ItemSpec> AvailableItems;
|
||||
public IList<ItemSpec> SelectedItems;
|
||||
|
||||
|
||||
public bool Compound; /// false = single meter items, true = combined meter items
|
||||
|
||||
public TracingConfigDlg()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
void Localize()
|
||||
{
|
||||
Text = Strings.Configuration;
|
||||
availableResultsLabel.Text = Strings.Available_results;
|
||||
selectedResultsLabel.Text = Strings.Selected_results;
|
||||
addButton.Text = Strings.Add;
|
||||
removeButton.Text = Strings.Remove;
|
||||
removeAllButton.Text = Strings.Remove_all;
|
||||
okButton.Text = Strings.OkBtnText;
|
||||
cancelButton.Text = Strings.Cancel;
|
||||
upButton.Text = Strings.UpBtnText;
|
||||
downButton.Text = Strings.DownBtnText;
|
||||
}
|
||||
|
||||
void ResultsConfig_Load(object sender, EventArgs e)
|
||||
{
|
||||
Localize();
|
||||
|
||||
/// Add columns to ListViewEx
|
||||
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Item, Width = 120 });
|
||||
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Caption });
|
||||
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Format });
|
||||
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Precision });
|
||||
selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Width });
|
||||
|
||||
editors = new Control[]
|
||||
{
|
||||
null,
|
||||
new TextBox(),
|
||||
new TextBox(),
|
||||
new TextBox(),
|
||||
new TextBox(),
|
||||
};
|
||||
foreach (var edi in editors)
|
||||
{
|
||||
if (edi != null)
|
||||
{
|
||||
edi.Visible = false;
|
||||
Controls.Add(edi);
|
||||
}
|
||||
}
|
||||
|
||||
selectedResultsListViewEx.SubItemClicked += new SubItemEventHandler(selectedResultsListViewEx_SubItemClicked);
|
||||
selectedResultsListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(selectedResultsListViewEx_SubItemEndEditing);
|
||||
|
||||
RedrawAvailable();
|
||||
RedrawSelected();
|
||||
}
|
||||
|
||||
void selectedResultsListViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
||||
{
|
||||
if ((e.SubItem > 0) && (e.SubItem < (int)Column.Count))
|
||||
{
|
||||
selectedResultsListViewEx.StartEditing(editors[e.SubItem], e.Item, e.SubItem);
|
||||
}
|
||||
}
|
||||
|
||||
void selectedResultsListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e)
|
||||
{
|
||||
ListViewItem lvi = e.Item;
|
||||
ItemSpec item = lvi.Tag as ItemSpec;
|
||||
|
||||
switch ((Column)e.SubItem)
|
||||
{
|
||||
case Column.Caption: item.Caption = e.DisplayText; return;
|
||||
case Column.Format: item.Format = e.DisplayText; return;
|
||||
case Column.Precision: item.Precision = e.DisplayText; return;
|
||||
|
||||
case Column.Width:
|
||||
{
|
||||
int width;
|
||||
if (Int32.TryParse(editors[e.SubItem].Text, out width) && width >= 0)
|
||||
{
|
||||
item.Width = width;
|
||||
return; /// OK
|
||||
}
|
||||
break; /// Error
|
||||
}
|
||||
default:
|
||||
return; /// OK
|
||||
}
|
||||
|
||||
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Redraw selected items (right hand side)
|
||||
/// </summary>
|
||||
void RedrawAvailable()
|
||||
{
|
||||
availableResultsListBox.Items.Clear();
|
||||
AvailableItems = new List<ItemSpec>();
|
||||
foreach (var item in ItemSpec.AllItems)
|
||||
{
|
||||
AvailableItems.Add(item);
|
||||
availableResultsListBox.Items.Add(item.Name);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Redraw selected items (right hand side)
|
||||
/// </summary>
|
||||
void RedrawSelected()
|
||||
{
|
||||
selectedResultsListViewEx.Items.Clear();
|
||||
foreach (var item in SelectedItems)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem(item.Name); /// Item
|
||||
lvi.Tag = item;
|
||||
lvi.SubItems.Add(item.Caption); /// Header
|
||||
lvi.SubItems.Add(item.Format); /// Format
|
||||
lvi.SubItems.Add(item.Precision); /// Precision
|
||||
lvi.SubItems.Add(item.Width.ToString()); /// Width
|
||||
|
||||
selectedResultsListViewEx.Items.Add(lvi);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateSelectedFromView()
|
||||
{
|
||||
}
|
||||
|
||||
void availableResultsListBox_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
/// Double click works when just one item is selected
|
||||
if (availableResultsListBox.SelectedIndices.Count == 1)
|
||||
{
|
||||
var oriItem = AvailableItems[availableResultsListBox.SelectedIndices[0]];
|
||||
SelectedItems.Add(oriItem.Clone());
|
||||
RedrawAvailable();
|
||||
RedrawSelected();
|
||||
|
||||
/// Select the last item
|
||||
selectedResultsListViewEx.Focus();
|
||||
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
|
||||
selectedResultsListViewEx.Items[SelectedItems.Count - 1].EnsureVisible();
|
||||
}
|
||||
}
|
||||
|
||||
void addButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
/// Append at the end, this code supports multiple selected items,
|
||||
/// although ListBox control settings may limit the max.number of selected items to one.
|
||||
|
||||
for (int i = availableResultsListBox.SelectedIndices.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var oriItem = AvailableItems[availableResultsListBox.SelectedIndices[i]];
|
||||
SelectedItems.Add(oriItem.Clone());
|
||||
}
|
||||
RedrawAvailable();
|
||||
RedrawSelected();
|
||||
|
||||
/// Select the last item
|
||||
selectedResultsListViewEx.Focus();
|
||||
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
|
||||
selectedResultsListViewEx.Items[SelectedItems.Count - 1].EnsureVisible();
|
||||
}
|
||||
|
||||
private void selectedResultsListBox_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
/// Double click works when just one item is selected
|
||||
|
||||
if (selectedResultsListViewEx.SelectedIndices.Count == 1)
|
||||
{
|
||||
SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[0]);
|
||||
RedrawAvailable();
|
||||
RedrawSelected();
|
||||
}
|
||||
}
|
||||
|
||||
void removeButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
/// Remove from the list (the last selected item first so that the indexes are not affected)
|
||||
|
||||
for (int i = selectedResultsListViewEx.SelectedIndices.Count - 1; i >= 0; i--)
|
||||
{
|
||||
SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[i]);
|
||||
}
|
||||
RedrawAvailable();
|
||||
RedrawSelected();
|
||||
}
|
||||
|
||||
void removeAllButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
/// Remove all items from 'Selected' list
|
||||
|
||||
SelectedItems.Clear();
|
||||
RedrawAvailable();
|
||||
RedrawSelected();
|
||||
}
|
||||
|
||||
void okButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void ResultsConfigDlg_KeyPress(object sender, KeyPressEventArgs e)
|
||||
{
|
||||
e.Handled = true;
|
||||
}
|
||||
|
||||
private void upButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (selectedResultsListViewEx.SelectedIndices.Count != 1) return;
|
||||
|
||||
int selIdx = selectedResultsListViewEx.SelectedIndices[0];
|
||||
if (selIdx == 0)
|
||||
{
|
||||
/// Cannot move up
|
||||
selectedResultsListViewEx.Focus();
|
||||
selectedResultsListViewEx.Items[0].Selected = true;
|
||||
return;
|
||||
}
|
||||
|
||||
ItemSpec tmp = SelectedItems[selIdx - 1];
|
||||
SelectedItems[selIdx - 1] = SelectedItems[selIdx];
|
||||
SelectedItems[selIdx] = tmp;
|
||||
|
||||
RedrawSelected();
|
||||
|
||||
selectedResultsListViewEx.Focus();
|
||||
selectedResultsListViewEx.Items[selIdx - 1].Selected = true;
|
||||
selectedResultsListViewEx.Items[selIdx - 1].EnsureVisible();
|
||||
}
|
||||
|
||||
private void downButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (selectedResultsListViewEx.SelectedIndices.Count != 1) return;
|
||||
|
||||
int selIdx = selectedResultsListViewEx.SelectedIndices[0];
|
||||
if (selIdx == SelectedItems.Count - 1)
|
||||
{
|
||||
/// Cannot move down
|
||||
selectedResultsListViewEx.Focus();
|
||||
selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true;
|
||||
return;
|
||||
}
|
||||
|
||||
ItemSpec tmp = SelectedItems[selIdx + 1];
|
||||
SelectedItems[selIdx + 1] = SelectedItems[selIdx];
|
||||
SelectedItems[selIdx] = tmp;
|
||||
|
||||
RedrawSelected();
|
||||
|
||||
selectedResultsListViewEx.Focus();
|
||||
selectedResultsListViewEx.Items[selIdx + 1].Selected = true;
|
||||
selectedResultsListViewEx.Items[selIdx + 1].EnsureVisible();
|
||||
}
|
||||
|
||||
private void cancelButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Cancel;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
-201
@@ -1,201 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
namespace ProductionTracing.Forms
|
||||
{
|
||||
partial class TracingConfigDlg
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.okButton = new System.Windows.Forms.Button();
|
||||
this.cancelButton = new System.Windows.Forms.Button();
|
||||
this.availableResultsListBox = new System.Windows.Forms.ListBox();
|
||||
this.availableResultsLabel = new System.Windows.Forms.Label();
|
||||
this.selectedResultsLabel = new System.Windows.Forms.Label();
|
||||
this.removeAllButton = new System.Windows.Forms.Button();
|
||||
this.removeButton = new System.Windows.Forms.Button();
|
||||
this.addButton = new System.Windows.Forms.Button();
|
||||
this.selectedResultsListViewEx = new Common.Forms.ListViewEx();
|
||||
this.upButton = new System.Windows.Forms.Button();
|
||||
this.downButton = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// okButton
|
||||
//
|
||||
this.okButton.Location = new System.Drawing.Point(344, 401);
|
||||
this.okButton.Name = "okButton";
|
||||
this.okButton.Size = new System.Drawing.Size(104, 30);
|
||||
this.okButton.TabIndex = 4;
|
||||
this.okButton.Text = "OK";
|
||||
this.okButton.UseVisualStyleBackColor = true;
|
||||
this.okButton.Click += new System.EventHandler(this.okButton_Click);
|
||||
//
|
||||
// cancelButton
|
||||
//
|
||||
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.cancelButton.Location = new System.Drawing.Point(465, 401);
|
||||
this.cancelButton.Name = "cancelButton";
|
||||
this.cancelButton.Size = new System.Drawing.Size(104, 30);
|
||||
this.cancelButton.TabIndex = 5;
|
||||
this.cancelButton.Text = "Cancel";
|
||||
this.cancelButton.UseVisualStyleBackColor = true;
|
||||
this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click);
|
||||
//
|
||||
// availableResultsListBox
|
||||
//
|
||||
this.availableResultsListBox.FormattingEnabled = true;
|
||||
this.availableResultsListBox.Location = new System.Drawing.Point(12, 31);
|
||||
this.availableResultsListBox.Name = "availableResultsListBox";
|
||||
this.availableResultsListBox.Size = new System.Drawing.Size(162, 355);
|
||||
this.availableResultsListBox.TabIndex = 6;
|
||||
this.availableResultsListBox.DoubleClick += new System.EventHandler(this.availableResultsListBox_DoubleClick);
|
||||
//
|
||||
// availableResultsLabel
|
||||
//
|
||||
this.availableResultsLabel.AutoSize = true;
|
||||
this.availableResultsLabel.Location = new System.Drawing.Point(12, 9);
|
||||
this.availableResultsLabel.Name = "availableResultsLabel";
|
||||
this.availableResultsLabel.Size = new System.Drawing.Size(86, 13);
|
||||
this.availableResultsLabel.TabIndex = 8;
|
||||
this.availableResultsLabel.Text = "Available results:";
|
||||
//
|
||||
// selectedResultsLabel
|
||||
//
|
||||
this.selectedResultsLabel.AutoSize = true;
|
||||
this.selectedResultsLabel.Location = new System.Drawing.Point(284, 9);
|
||||
this.selectedResultsLabel.Name = "selectedResultsLabel";
|
||||
this.selectedResultsLabel.Size = new System.Drawing.Size(85, 13);
|
||||
this.selectedResultsLabel.TabIndex = 9;
|
||||
this.selectedResultsLabel.Text = "Selected results:";
|
||||
//
|
||||
// removeAllButton
|
||||
//
|
||||
this.removeAllButton.Location = new System.Drawing.Point(184, 144);
|
||||
this.removeAllButton.Name = "removeAllButton";
|
||||
this.removeAllButton.Size = new System.Drawing.Size(94, 30);
|
||||
this.removeAllButton.TabIndex = 46;
|
||||
this.removeAllButton.Text = "<< R&emove all";
|
||||
this.removeAllButton.UseVisualStyleBackColor = true;
|
||||
this.removeAllButton.Click += new System.EventHandler(this.removeAllButton_Click);
|
||||
//
|
||||
// removeButton
|
||||
//
|
||||
this.removeButton.Location = new System.Drawing.Point(184, 109);
|
||||
this.removeButton.Name = "removeButton";
|
||||
this.removeButton.Size = new System.Drawing.Size(93, 30);
|
||||
this.removeButton.TabIndex = 45;
|
||||
this.removeButton.Text = "< &Remove";
|
||||
this.removeButton.UseVisualStyleBackColor = true;
|
||||
this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
|
||||
//
|
||||
// addButton
|
||||
//
|
||||
this.addButton.Location = new System.Drawing.Point(184, 74);
|
||||
this.addButton.Name = "addButton";
|
||||
this.addButton.Size = new System.Drawing.Size(93, 30);
|
||||
this.addButton.TabIndex = 44;
|
||||
this.addButton.Text = "&Add >";
|
||||
this.addButton.UseVisualStyleBackColor = true;
|
||||
this.addButton.Click += new System.EventHandler(this.addButton_Click);
|
||||
//
|
||||
// selectedResultsListViewEx
|
||||
//
|
||||
this.selectedResultsListViewEx.AllowColumnReorder = true;
|
||||
this.selectedResultsListViewEx.DoubleClickActivation = false;
|
||||
this.selectedResultsListViewEx.FullRowSelect = true;
|
||||
this.selectedResultsListViewEx.Location = new System.Drawing.Point(287, 31);
|
||||
this.selectedResultsListViewEx.Name = "selectedResultsListViewEx";
|
||||
this.selectedResultsListViewEx.Size = new System.Drawing.Size(594, 355);
|
||||
this.selectedResultsListViewEx.TabIndex = 47;
|
||||
this.selectedResultsListViewEx.UseCompatibleStateImageBehavior = false;
|
||||
this.selectedResultsListViewEx.View = System.Windows.Forms.View.Details;
|
||||
this.selectedResultsListViewEx.SubItemClicked += new Common.Forms.SubItemEventHandler(this.selectedResultsListViewEx_SubItemClicked);
|
||||
this.selectedResultsListViewEx.SubItemEndEditing += new Common.Forms.SubItemEndEditingEventHandler(this.selectedResultsListViewEx_SubItemEndEditing);
|
||||
//
|
||||
// upButton
|
||||
//
|
||||
this.upButton.Location = new System.Drawing.Point(184, 236);
|
||||
this.upButton.Name = "upButton";
|
||||
this.upButton.Size = new System.Drawing.Size(93, 30);
|
||||
this.upButton.TabIndex = 48;
|
||||
this.upButton.Text = "Up";
|
||||
this.upButton.UseVisualStyleBackColor = true;
|
||||
this.upButton.Click += new System.EventHandler(this.upButton_Click);
|
||||
//
|
||||
// downButton
|
||||
//
|
||||
this.downButton.Location = new System.Drawing.Point(184, 272);
|
||||
this.downButton.Name = "downButton";
|
||||
this.downButton.Size = new System.Drawing.Size(93, 30);
|
||||
this.downButton.TabIndex = 49;
|
||||
this.downButton.Text = "Down";
|
||||
this.downButton.UseVisualStyleBackColor = true;
|
||||
this.downButton.Click += new System.EventHandler(this.downButton_Click);
|
||||
//
|
||||
// ResultsConfigDlg
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(893, 445);
|
||||
this.Controls.Add(this.downButton);
|
||||
this.Controls.Add(this.upButton);
|
||||
this.Controls.Add(this.selectedResultsListViewEx);
|
||||
this.Controls.Add(this.removeAllButton);
|
||||
this.Controls.Add(this.removeButton);
|
||||
this.Controls.Add(this.addButton);
|
||||
this.Controls.Add(this.selectedResultsLabel);
|
||||
this.Controls.Add(this.availableResultsLabel);
|
||||
this.Controls.Add(this.availableResultsListBox);
|
||||
this.Controls.Add(this.cancelButton);
|
||||
this.Controls.Add(this.okButton);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Name = "ResultsConfigDlg";
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "ResultsConfig";
|
||||
this.Load += new System.EventHandler(this.ResultsConfig_Load);
|
||||
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ResultsConfigDlg_KeyPress);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button okButton;
|
||||
private System.Windows.Forms.Button cancelButton;
|
||||
private System.Windows.Forms.ListBox availableResultsListBox;
|
||||
private System.Windows.Forms.Label availableResultsLabel;
|
||||
private System.Windows.Forms.Label selectedResultsLabel;
|
||||
private System.Windows.Forms.Button removeAllButton;
|
||||
private System.Windows.Forms.Button removeButton;
|
||||
private System.Windows.Forms.Button addButton;
|
||||
private Common.Forms.ListViewEx selectedResultsListViewEx;
|
||||
private System.Windows.Forms.Button upButton;
|
||||
private System.Windows.Forms.Button downButton;
|
||||
}
|
||||
}
|
||||
@@ -1,315 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2021 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using NHibernate;
|
||||
using NHibernate.Criterion;
|
||||
using SharedDatabase.Entities;
|
||||
using ProductionTracing.Resources;
|
||||
|
||||
namespace ProductionTracing
|
||||
{
|
||||
public enum ItemSpecID
|
||||
{
|
||||
RefRecordId,
|
||||
|
||||
POrder,
|
||||
Workflow,
|
||||
Timestamp,
|
||||
Name1,
|
||||
Code1,
|
||||
Name2,
|
||||
Code2,
|
||||
Code3,
|
||||
Code4,
|
||||
|
||||
PartName,
|
||||
PartCode,
|
||||
|
||||
Workstep,
|
||||
Workplace,
|
||||
UserName,
|
||||
WstepTstamp,
|
||||
Result,
|
||||
}
|
||||
|
||||
public enum ItemCaps
|
||||
{
|
||||
None = 0,
|
||||
RefRecord = 1,
|
||||
StepRecord = 2,
|
||||
Record = 4,
|
||||
}
|
||||
|
||||
public class ItemSpec
|
||||
{
|
||||
///
|
||||
/// Function delegate to pick a reference record and convert it to a string
|
||||
///
|
||||
public delegate string PrintDlgt(object x, string format, string precision, int width);
|
||||
|
||||
///
|
||||
/// Public fields
|
||||
///
|
||||
public readonly ItemSpecID Uid; /// Unique Uid used to distinguish items
|
||||
public readonly string Name; /// Name that can be localized to identify the item in a list
|
||||
public readonly PrintDlgt PrintFn; /// Function used to convert the result to a text
|
||||
|
||||
public string Caption; /// User defined text printed in the column header
|
||||
public string Format; /// Specifies the text generation
|
||||
public string Precision; /// Specifies the text generation
|
||||
public int Width; /// Specifies the text generation
|
||||
|
||||
readonly ItemCaps itemSpecCaps;
|
||||
|
||||
/// <summary> Public parameterless constructor </summary>
|
||||
public ItemSpec()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary> Constructor to specify all items </summary>
|
||||
public ItemSpec(ItemSpecID uid, string name, ItemCaps itemSpecCaps, PrintDlgt printFn)
|
||||
{
|
||||
Uid = uid;
|
||||
Name = name;
|
||||
PrintFn = printFn;
|
||||
this.itemSpecCaps = itemSpecCaps;
|
||||
///
|
||||
Caption = name;
|
||||
Format = "{0}";
|
||||
Precision = string.Empty;
|
||||
Width = 0;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return string.Format("uid={0}, name={1}, caption={2}", Uid, Name, Caption);
|
||||
}
|
||||
|
||||
/// <summary> Copy constructor </summary>
|
||||
public ItemSpec Clone()
|
||||
{
|
||||
ItemSpec newItem = new ItemSpec(Uid, Name, itemSpecCaps, PrintFn);
|
||||
newItem.Caption = Caption;
|
||||
newItem.Format = Format;
|
||||
newItem.Precision = Precision;
|
||||
newItem.Width = Width;
|
||||
return newItem;
|
||||
}
|
||||
|
||||
|
||||
/// <summary> Safe wrapper which replaces null-s by empty strings </summary>
|
||||
public string Print(object x)
|
||||
{
|
||||
string str = PrintFn(x, Format, Precision, Width);
|
||||
return (str == null) ? string.Empty : str;
|
||||
}
|
||||
|
||||
|
||||
/// <summary> Similar to Print(), in addition embeds text into "" </summary>
|
||||
public string Export(object x)
|
||||
{
|
||||
string str = PrintFn(x, Format, Precision, Width);
|
||||
if (str == null) str = string.Empty;
|
||||
|
||||
if (Uid == ItemSpecID.POrder || (Uid >= ItemSpecID.Name1 && Uid == ItemSpecID.PartCode))
|
||||
{
|
||||
return string.Format("=\"{0}\"", str);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
/// Static list of all available items
|
||||
public static readonly IList<ItemSpec> AllItems;
|
||||
|
||||
///
|
||||
/// Static constructor that initializes the list of all items
|
||||
///
|
||||
static ItemSpec()
|
||||
{
|
||||
AllItems = new List<ItemSpec>();
|
||||
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.RefRecordId, Strings.RefRecordId, ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, ((int)x).ToString())));
|
||||
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.POrder, Strings.Order, ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Workflow, Strings.Workflow, ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Timestamp, Strings.Time_stamp, ItemCaps.RefRecord, (x, f, p, w) => string.IsNullOrEmpty(f) ? ((DateTime)x).ToString() : string.Format(f, (DateTime)x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Name1, "Name1", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Code1, "Code1", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Name2, "Name2", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Code2, "Code2", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Code3, "Code3", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
AllItems.Add(new ItemSpec(ItemSpecID.Code4, "Code4", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
|
||||
//AllItems.Add(new ItemSpec(ItemSpecID.PartName, Strings.Part_name, ItemCaps.RefRecord | ItemCaps.Record, (x, f, p, w) => FormatStr(f, ((Part)x).Name)));
|
||||
//AllItems.Add(new ItemSpec(ItemSpecID.PartCode, Strings.Part_barcode, ItemCaps.RefRecord | ItemCaps.Record, (x, f, p, w) => FormatStr(f, x)));
|
||||
|
||||
//AllItems.Add(new ItemSpec(ItemSpecID.Workstep, Strings.Workstep, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, x is Workstep ? (x as Workstep).Name : "<null>")));
|
||||
//AllItems.Add(new ItemSpec(ItemSpecID.Workplace, Strings.Workplace, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
//AllItems.Add(new ItemSpec(ItemSpecID.UserName, Strings.User_name, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, x)));
|
||||
//AllItems.Add(new ItemSpec(ItemSpecID.WstepTstamp, Strings.Workstep + " " + Strings.Time_stamp,
|
||||
// ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => string.IsNullOrEmpty(f) ? ((DateTime)x).ToString() : string.Format(f, (DateTime)x)));
|
||||
//AllItems.Add(new ItemSpec(ItemSpecID.Result, Strings.Result, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, ((int)x).ToString())));
|
||||
}
|
||||
|
||||
|
||||
public static string FormatStr(string format, object value)
|
||||
{
|
||||
int len;
|
||||
|
||||
if (string.IsNullOrEmpty(format))
|
||||
{
|
||||
return (string)value;
|
||||
}
|
||||
else if (int.TryParse(format, out len) && len > 0)
|
||||
{
|
||||
if (((string)value).Length >= len)
|
||||
{
|
||||
return ((string)value).Substring(0, len);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (string)value;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return string.Format(format, value);
|
||||
}
|
||||
}
|
||||
|
||||
public PropertyProjection GetProperty(ReferenceRecord refRecord, StepRecord stepRecord, Record record)
|
||||
{
|
||||
switch (Uid)
|
||||
{
|
||||
default:
|
||||
case ItemSpecID.RefRecordId: return Projections.Property(() => refRecord.Id);
|
||||
case ItemSpecID.POrder: return Projections.Property(() => refRecord.POName);
|
||||
case ItemSpecID.Workflow: return Projections.Property(() => refRecord.Workflow);
|
||||
case ItemSpecID.Timestamp: return Projections.Property(() => refRecord.Timestamp);
|
||||
case ItemSpecID.Name1: return Projections.Property(() => refRecord.Name1);
|
||||
case ItemSpecID.Code1: return Projections.Property(() => refRecord.Code1);
|
||||
case ItemSpecID.Name2: return Projections.Property(() => refRecord.Name2);
|
||||
case ItemSpecID.Code2: return Projections.Property(() => refRecord.Code2);
|
||||
case ItemSpecID.Code3: return Projections.Property(() => refRecord.Code3);
|
||||
case ItemSpecID.Code4: return Projections.Property(() => refRecord.Code4);
|
||||
|
||||
case ItemSpecID.PartName: return Projections.Property(() => record.Name);
|
||||
case ItemSpecID.PartCode: return Projections.Property(() => record.Code);
|
||||
|
||||
case ItemSpecID.Workstep: return Projections.Property(() => stepRecord.Workstep);
|
||||
case ItemSpecID.Workplace: return Projections.Property(() => stepRecord.Workplace);
|
||||
case ItemSpecID.UserName: return Projections.Property(() => stepRecord.User);
|
||||
case ItemSpecID.Result: return Projections.Property(() => stepRecord.Result);
|
||||
}
|
||||
}
|
||||
|
||||
public ItemCaps GetCaps()
|
||||
{
|
||||
return itemSpecCaps;
|
||||
}
|
||||
|
||||
|
||||
public static ItemSpec GetItem(ItemSpecID id)
|
||||
{
|
||||
foreach (var item in AllItems)
|
||||
if (item.Uid == id)
|
||||
return item.Clone();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemSpec GetItem(string uidName)
|
||||
{
|
||||
foreach (var item in AllItems)
|
||||
if (item.Uid.ToString() == uidName)
|
||||
return item.Clone();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static ProjectionList GetProjections(IList<ItemSpec> items, ReferenceRecord refRecord, StepRecord stepRecord, Record record)
|
||||
{
|
||||
ProjectionList projections = Projections.ProjectionList();
|
||||
foreach (var item in items)
|
||||
{
|
||||
PropertyProjection projection = item.GetProperty(refRecord, stepRecord, record);
|
||||
if (projection != null)
|
||||
projections.Add(projection);
|
||||
}
|
||||
|
||||
return projections;
|
||||
}
|
||||
|
||||
public static IList<object[]> Expand(IList<object[]> data, IList<ItemSpec> items)
|
||||
{
|
||||
if (data.Count == 0) return data;
|
||||
|
||||
int iSize = data[0].Length;
|
||||
int oSize = items.Count;
|
||||
for (int i = 0; i < data.Count; i++)
|
||||
{
|
||||
object[] inArr = data[i];
|
||||
|
||||
object[] outArr = new object[oSize];
|
||||
int srcIx = 0;
|
||||
for (int dstIx = 0; dstIx < oSize; dstIx++)
|
||||
{
|
||||
outArr[dstIx] = inArr[srcIx++];
|
||||
}
|
||||
|
||||
data[i] = outArr;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
public static string[] ToStrArray(IList<ItemSpec> items)
|
||||
{
|
||||
int count = (items != null) ? items.Count : 0;
|
||||
string[] result = new string[count];
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
result[i] = string.Format("{0}~{1}~{2}~{3}~{4}",
|
||||
items[i].Uid,
|
||||
items[i].Caption,
|
||||
items[i].Format,
|
||||
items[i].Precision,
|
||||
items[i].Width);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static IList<ItemSpec> FromStrArray(string[] strArray)
|
||||
{
|
||||
IList<ItemSpec> result = new List<ItemSpec>();
|
||||
if (strArray != null)
|
||||
{
|
||||
for (int i = 0; i < strArray.Length; i++)
|
||||
{
|
||||
string[] field = strArray[i].Split(new char[] { '~' });
|
||||
try
|
||||
{
|
||||
ItemSpec item = GetItem(field[0]);
|
||||
item.Caption = field[1];
|
||||
item.Format = field[2];
|
||||
item.Precision = field[3];
|
||||
item.Width = int.Parse(field[4]);
|
||||
|
||||
result.Add(item);
|
||||
}
|
||||
catch
|
||||
{
|
||||
ItemSpec item = GetItem(ItemSpecID.RefRecordId);
|
||||
item.Format = string.Format("Parse error: {0}", strArray[i]);
|
||||
result.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,265 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2015-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace ProductionTracing
|
||||
{
|
||||
/// <summary>
|
||||
/// Class to be serialized to an XML file...
|
||||
/// Public members are local settings.
|
||||
/// These settings are modified by dialogs invoked by menu items
|
||||
/// Edit->Preferences ... PreferencesDlg ... S1.1(language, etc. local settings), and
|
||||
/// Edit->Advanced settings ... AdvancedSettingsDlg ... S1.2(spec. where bench settings are stored)
|
||||
/// </summary>
|
||||
[XmlRootAttribute("ProductionTracing")]
|
||||
public class LocalSettings
|
||||
{
|
||||
static XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(LocalSettings) })[0];
|
||||
|
||||
/// Configuration file ecryption/decryption key and initialization vector
|
||||
static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 };
|
||||
static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 };
|
||||
|
||||
/// <summary>
|
||||
/// User interface language (used as CultureInfo(..) constructor argument).
|
||||
/// </summary>
|
||||
public string Language;
|
||||
public bool IsUserLoginRequired;
|
||||
|
||||
/// Database settings of servers.
|
||||
public string ConnectionString;
|
||||
public string UsersDBConnString;
|
||||
|
||||
/// Statistics options
|
||||
public bool TwoDim;
|
||||
public string RowItemID; /// Caption of the selected row item
|
||||
public string ColumnItemID; /// Caption of the selected column item (applies when TwoDim == true)
|
||||
public bool FilterEnabled;
|
||||
public string FilteredItemId; /// Caption of the item to be filtered
|
||||
public string FilteredValue;
|
||||
|
||||
/// MainWnd
|
||||
public int MainWndLeft;
|
||||
public int MainWndTop;
|
||||
public int MainWndWidth;
|
||||
public int MainWndHeight;
|
||||
public bool MainWndMaximized;
|
||||
|
||||
/// History of texts entered in ComboBoxes
|
||||
public string[] Combo1History;
|
||||
public string[] Combo2History;
|
||||
public string[] Combo4History;
|
||||
public string[] Combo5History;
|
||||
public string[] Combo6History;
|
||||
public string[] Combo7History;
|
||||
public string[] Combo8History;
|
||||
public string[] Combo9History;
|
||||
|
||||
/// Last configuration file name
|
||||
public string LastConfigFileName;
|
||||
|
||||
/// Report file name history
|
||||
public string LastReportFileName;
|
||||
public string[] ReportFileNameHistory;
|
||||
[XmlIgnore]
|
||||
public int ReportFileNameHistoryCount { get { return (ReportFileNameHistory != null) ? ReportFileNameHistory.Length : 0; } }
|
||||
|
||||
/// Report configuration
|
||||
public string[] ReportItems;
|
||||
|
||||
/// Parameterless constructor required by serialization
|
||||
public LocalSettings() { }
|
||||
|
||||
public LocalSettings(bool createNew)
|
||||
{
|
||||
if (createNew)
|
||||
{
|
||||
Language = "EN";
|
||||
IsUserLoginRequired = false;
|
||||
#if DEBUG
|
||||
ConnectionString = "SERVER=localhost; DATABASE=nanjingshared; UID=root; PASSWORD=kraken; CHARSET=utf8;";
|
||||
UsersDBConnString = "SERVER=localhost; DATABASE=nanjingshared; UID=root; PASSWORD=kraken; CHARSET=utf8;";
|
||||
#else
|
||||
ConnectionString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;";
|
||||
UsersDBConnString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;";
|
||||
#endif
|
||||
MainWndLeft = 20;
|
||||
MainWndTop = 20;
|
||||
MainWndWidth = 1406;
|
||||
MainWndHeight = 750;
|
||||
MainWndMaximized = false;
|
||||
LastConfigFileName = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load public fields of this class from the XML file.
|
||||
/// </summary>
|
||||
/// <returns>LocalSettings object or null when Load() fails</returns>
|
||||
public static LocalSettings Load(string fileName)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool isEncrypted = true;
|
||||
using (StreamReader reader = new StreamReader(fileName))
|
||||
{
|
||||
isEncrypted = !reader.ReadLine().StartsWith("<?xml version=");
|
||||
reader.Close();
|
||||
}
|
||||
|
||||
if (isEncrypted)
|
||||
{
|
||||
/// Write settings to a string
|
||||
StringBuilder plain = new StringBuilder();
|
||||
|
||||
using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros })
|
||||
{
|
||||
using (FileStream fsCrypt = new FileStream(fileName, FileMode.Open))
|
||||
{
|
||||
using (ICryptoTransform decryptor = aes.CreateDecryptor(key, IV))
|
||||
{
|
||||
using (CryptoStream cs = new CryptoStream(fsCrypt, decryptor, CryptoStreamMode.Read))
|
||||
{
|
||||
using (MemoryStream mStream = new MemoryStream())
|
||||
{
|
||||
using (var writer = new BinaryWriter(mStream))
|
||||
{
|
||||
int data;
|
||||
while ((data = cs.ReadByte()) != -1)
|
||||
{
|
||||
if (data != 0) writer.Write((byte)data);
|
||||
}
|
||||
writer.Flush();
|
||||
mStream.Position = 0;
|
||||
|
||||
using (var reader = new StreamReader(mStream))
|
||||
{
|
||||
return serializer.Deserialize(reader) as LocalSettings;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using (StreamReader reader = new StreamReader(fileName))
|
||||
{
|
||||
return serializer.Deserialize(reader) as LocalSettings;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string msg = e.Message;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save public fields of this class to the XML file.
|
||||
/// </summary>
|
||||
public void Save()
|
||||
{
|
||||
try
|
||||
{
|
||||
/// Encrypt and write to file 'Program.LocalSettingsFileName'
|
||||
using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros })
|
||||
{
|
||||
using (FileStream fsCrypt = new FileStream(Program.LocalSettingsFileName, FileMode.Create))
|
||||
{
|
||||
using (ICryptoTransform encryptor = aes.CreateEncryptor(key, IV))
|
||||
{
|
||||
using (CryptoStream cs = new CryptoStream(fsCrypt, encryptor, CryptoStreamMode.Write))
|
||||
{
|
||||
using (MemoryStream mStream = new MemoryStream())
|
||||
{
|
||||
using (var writer = new StreamWriter(mStream))
|
||||
{
|
||||
/// Serialize and write settings to a memory stream
|
||||
serializer.Serialize(writer, this);
|
||||
writer.Flush();
|
||||
mStream.Position = 0;
|
||||
|
||||
using (var reader = new StreamReader(mStream))
|
||||
{
|
||||
/// Encrypt and write to file 'Program.LocalSettingsFileName'
|
||||
int data;
|
||||
while ((data = mStream.ReadByte()) != -1) cs.WriteByte((byte)data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
string msg = e.Message;
|
||||
}
|
||||
}
|
||||
|
||||
public static void PrepareCombo(System.Windows.Forms.ComboBox comboBox, string[] history)
|
||||
{
|
||||
if (history == null) history = new string[0];
|
||||
|
||||
for (int i = 0; i < history.Length; i++) comboBox.Items.Add(history[i]);
|
||||
|
||||
if (comboBox.Items.Count > 0) comboBox.Text = comboBox.Items[0].ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Updates history stored in a string array by a new latest string.
|
||||
/// </summary>
|
||||
/// <param name="lastStrValue">Lste entered string</param>
|
||||
/// <returns>true = updated and saved</returns>
|
||||
public bool UpdateHistory(string lastStrValue, ref string[] history, int maxHistoryLen = 10)
|
||||
{
|
||||
if (string.IsNullOrEmpty(lastStrValue)) return false;
|
||||
|
||||
int currentHistoryCount = (history != null) ? history.Length : 0;
|
||||
|
||||
int match = -1;
|
||||
for (int i = 0; i < currentHistoryCount; i++)
|
||||
{
|
||||
if (history[i] == lastStrValue)
|
||||
{
|
||||
match = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (match >= 0 || currentHistoryCount >= maxHistoryLen)
|
||||
{
|
||||
/// History does not have to be (because of a match) or should not be extended (because of the lenght)
|
||||
if (match < 0) match = currentHistoryCount - 1;
|
||||
|
||||
for (int j = match; j > 0; j--)
|
||||
{
|
||||
history[j] = history[j - 1];
|
||||
}
|
||||
history[0] = lastStrValue;
|
||||
}
|
||||
else
|
||||
{
|
||||
/// History wiil be extended, new item inserted at the beginning
|
||||
string[] newHistory = new string[currentHistoryCount + 1];
|
||||
newHistory[0] = lastStrValue;
|
||||
for (int j = 1; j <= currentHistoryCount; j++)
|
||||
{
|
||||
newHistory[j] = history[j - 1];
|
||||
}
|
||||
history = newHistory;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,207 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{328AD6D5-6E62-42FB-B348-9899F813DBD3}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ProductionTracing</RootNamespace>
|
||||
<AssemblyName>ProductionTracing</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>TRACE;DEBUG</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>ProductionTracing.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="FluentNHibernate, Version=2.0.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FluentNHibernate.2.0.3.0\lib\net40\FluentNHibernate.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Iesi.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Iesi.Collections.4.0.0.4000\lib\net40\Iesi.Collections.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="log4net">
|
||||
<HintPath>..\packages\log4net.2.0.2\lib\net40-full\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NHibernate, Version=4.0.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NHibernate.4.0.4.4000\lib\net40\NHibernate.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Forms\MoreInfoDlg.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\MoreInfoDlg.Designer.cs">
|
||||
<DependentUpon>MoreInfoDlg.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\NoBenchOrDatabaseDlg.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\NoBenchOrDatabaseDlg.designer.cs">
|
||||
<DependentUpon>NoBenchOrDatabaseDlg.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\SettingsDlg.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\SettingsDlg.designer.cs">
|
||||
<DependentUpon>SettingsDlg.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\StatisticsDlg.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\StatisticsDlg.designer.cs">
|
||||
<DependentUpon>StatisticsDlg.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\StatisticsOptionsDlg.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\StatisticsOptionsDlg.designer.cs">
|
||||
<DependentUpon>StatisticsOptionsDlg.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\TracingConfigDlg.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\TracingConfigDlg.designer.cs">
|
||||
<DependentUpon>TracingConfigDlg.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ItemSpec.cs" />
|
||||
<Compile Include="LocalSettings.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="FiltersConfig.cs" />
|
||||
<Compile Include="QueryResults.cs" />
|
||||
<Compile Include="Resources\Strings1.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Strings.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ProductionTracingWnd.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ProductionTracingWnd.Designer.cs">
|
||||
<DependentUpon>ProductionTracingWnd.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Forms\MoreInfoDlg.resx">
|
||||
<DependentUpon>MoreInfoDlg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\NoBenchOrDatabaseDlg.resx">
|
||||
<DependentUpon>NoBenchOrDatabaseDlg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\SettingsDlg.resx">
|
||||
<DependentUpon>SettingsDlg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\StatisticsDlg.resx">
|
||||
<DependentUpon>StatisticsDlg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\StatisticsOptionsDlg.resx">
|
||||
<DependentUpon>StatisticsOptionsDlg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\TracingConfigDlg.resx">
|
||||
<DependentUpon>TracingConfigDlg.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Resources\Strings.cs.resx" />
|
||||
<EmbeddedResource Include="Resources\Strings.de.resx" />
|
||||
<EmbeddedResource Include="Resources\Strings.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Strings1.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Resources\Strings.sk.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ProductionTracingWnd.resx">
|
||||
<DependentUpon>ProductionTracingWnd.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="Printers\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="SampleConfig\log4netConfig.xml">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Common\Common.csproj">
|
||||
<Project>{c8939821-ba5c-4988-a3d0-bf53b74865c7}</Project>
|
||||
<Name>Common</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\SharedDatabase\SharedDatabase.csproj">
|
||||
<Project>{211b5e3f-9996-48a7-abde-c878dd2d71c2}</Project>
|
||||
<Name>SharedDatabase</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
-971
@@ -1,971 +0,0 @@
|
||||
namespace ProductionTracing
|
||||
{
|
||||
partial class ProductionTracingWnd
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.vSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.hSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.filtersItemsSplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.filtersGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox2 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox2 = new System.Windows.Forms.CheckBox();
|
||||
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox3 = new System.Windows.Forms.GroupBox();
|
||||
this.last30dButton = new System.Windows.Forms.Button();
|
||||
this.last7dButton = new System.Windows.Forms.Button();
|
||||
this.yesterdayButton = new System.Windows.Forms.Button();
|
||||
this.toLabel = new System.Windows.Forms.Label();
|
||||
this.toDateTimePicker = new System.Windows.Forms.DateTimePicker();
|
||||
this.fromLabel = new System.Windows.Forms.Label();
|
||||
this.fromDateTimePicker = new System.Windows.Forms.DateTimePicker();
|
||||
this.checkBox3 = new System.Windows.Forms.CheckBox();
|
||||
this.v2SplitContainer = new System.Windows.Forms.SplitContainer();
|
||||
this.splitContainer8 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox8 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox8 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox8 = new System.Windows.Forms.CheckBox();
|
||||
this.splitContainer9 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox9 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox9 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox9 = new System.Windows.Forms.CheckBox();
|
||||
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox4 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox4 = new System.Windows.Forms.CheckBox();
|
||||
this.splitContainer5 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox5 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox5 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox5 = new System.Windows.Forms.CheckBox();
|
||||
this.splitContainer6 = new System.Windows.Forms.SplitContainer();
|
||||
this.groupBox6 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox6 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox6 = new System.Windows.Forms.CheckBox();
|
||||
this.groupBox7 = new System.Windows.Forms.GroupBox();
|
||||
this.comboBox7 = new System.Windows.Forms.ComboBox();
|
||||
this.checkBox7 = new System.Windows.Forms.CheckBox();
|
||||
this.itemsGroupBox = new System.Windows.Forms.GroupBox();
|
||||
this.tabControl = new System.Windows.Forms.TabControl();
|
||||
this.statisticsBtn = new System.Windows.Forms.Button();
|
||||
this.printQueryResultsBtn = new System.Windows.Forms.Button();
|
||||
this.exportQueryResultsBtn = new System.Windows.Forms.Button();
|
||||
this.formatOfResultsBtn = new System.Windows.Forms.Button();
|
||||
this.settingsBtn = new System.Windows.Forms.Button();
|
||||
this.saveConfigBtn = new System.Windows.Forms.Button();
|
||||
this.loadConfigBtn = new System.Windows.Forms.Button();
|
||||
this.executeQueryBtn = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.vSplitContainer)).BeginInit();
|
||||
this.vSplitContainer.Panel1.SuspendLayout();
|
||||
this.vSplitContainer.Panel2.SuspendLayout();
|
||||
this.vSplitContainer.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.hSplitContainer)).BeginInit();
|
||||
this.hSplitContainer.Panel1.SuspendLayout();
|
||||
this.hSplitContainer.Panel2.SuspendLayout();
|
||||
this.hSplitContainer.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.filtersItemsSplitContainer)).BeginInit();
|
||||
this.filtersItemsSplitContainer.Panel1.SuspendLayout();
|
||||
this.filtersItemsSplitContainer.Panel2.SuspendLayout();
|
||||
this.filtersItemsSplitContainer.SuspendLayout();
|
||||
this.filtersGroupBox.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.Panel2.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
this.groupBox2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit();
|
||||
this.splitContainer3.Panel1.SuspendLayout();
|
||||
this.splitContainer3.Panel2.SuspendLayout();
|
||||
this.splitContainer3.SuspendLayout();
|
||||
this.groupBox3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.v2SplitContainer)).BeginInit();
|
||||
this.v2SplitContainer.Panel1.SuspendLayout();
|
||||
this.v2SplitContainer.Panel2.SuspendLayout();
|
||||
this.v2SplitContainer.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer8)).BeginInit();
|
||||
this.splitContainer8.Panel1.SuspendLayout();
|
||||
this.splitContainer8.Panel2.SuspendLayout();
|
||||
this.splitContainer8.SuspendLayout();
|
||||
this.groupBox8.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer9)).BeginInit();
|
||||
this.splitContainer9.Panel1.SuspendLayout();
|
||||
this.splitContainer9.SuspendLayout();
|
||||
this.groupBox9.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).BeginInit();
|
||||
this.splitContainer4.Panel1.SuspendLayout();
|
||||
this.splitContainer4.Panel2.SuspendLayout();
|
||||
this.splitContainer4.SuspendLayout();
|
||||
this.groupBox4.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).BeginInit();
|
||||
this.splitContainer5.Panel1.SuspendLayout();
|
||||
this.splitContainer5.Panel2.SuspendLayout();
|
||||
this.splitContainer5.SuspendLayout();
|
||||
this.groupBox5.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer6)).BeginInit();
|
||||
this.splitContainer6.Panel1.SuspendLayout();
|
||||
this.splitContainer6.Panel2.SuspendLayout();
|
||||
this.splitContainer6.SuspendLayout();
|
||||
this.groupBox6.SuspendLayout();
|
||||
this.groupBox7.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// vSplitContainer
|
||||
//
|
||||
this.vSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.vSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||
this.vSplitContainer.Location = new System.Drawing.Point(0, 0);
|
||||
this.vSplitContainer.Name = "vSplitContainer";
|
||||
//
|
||||
// vSplitContainer.Panel1
|
||||
//
|
||||
this.vSplitContainer.Panel1.Controls.Add(this.hSplitContainer);
|
||||
this.vSplitContainer.Panel1MinSize = 100;
|
||||
//
|
||||
// vSplitContainer.Panel2
|
||||
//
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.statisticsBtn);
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.printQueryResultsBtn);
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.exportQueryResultsBtn);
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.formatOfResultsBtn);
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.settingsBtn);
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.saveConfigBtn);
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.loadConfigBtn);
|
||||
this.vSplitContainer.Panel2.Controls.Add(this.executeQueryBtn);
|
||||
this.vSplitContainer.Panel2MinSize = 100;
|
||||
this.vSplitContainer.Size = new System.Drawing.Size(1390, 711);
|
||||
this.vSplitContainer.SplitterDistance = 1246;
|
||||
this.vSplitContainer.TabIndex = 0;
|
||||
//
|
||||
// hSplitContainer
|
||||
//
|
||||
this.hSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.hSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.hSplitContainer.IsSplitterFixed = true;
|
||||
this.hSplitContainer.Location = new System.Drawing.Point(0, 0);
|
||||
this.hSplitContainer.Name = "hSplitContainer";
|
||||
this.hSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// hSplitContainer.Panel1
|
||||
//
|
||||
this.hSplitContainer.Panel1.Controls.Add(this.filtersItemsSplitContainer);
|
||||
//
|
||||
// hSplitContainer.Panel2
|
||||
//
|
||||
this.hSplitContainer.Panel2.Controls.Add(this.tabControl);
|
||||
this.hSplitContainer.Size = new System.Drawing.Size(1246, 711);
|
||||
this.hSplitContainer.SplitterDistance = 285;
|
||||
this.hSplitContainer.TabIndex = 0;
|
||||
//
|
||||
// filtersItemsSplitContainer
|
||||
//
|
||||
this.filtersItemsSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.filtersItemsSplitContainer.Location = new System.Drawing.Point(0, 0);
|
||||
this.filtersItemsSplitContainer.Name = "filtersItemsSplitContainer";
|
||||
//
|
||||
// filtersItemsSplitContainer.Panel1
|
||||
//
|
||||
this.filtersItemsSplitContainer.Panel1.Controls.Add(this.filtersGroupBox);
|
||||
//
|
||||
// filtersItemsSplitContainer.Panel2
|
||||
//
|
||||
this.filtersItemsSplitContainer.Panel2.Controls.Add(this.itemsGroupBox);
|
||||
this.filtersItemsSplitContainer.Size = new System.Drawing.Size(1246, 285);
|
||||
this.filtersItemsSplitContainer.SplitterDistance = 623;
|
||||
this.filtersItemsSplitContainer.TabIndex = 1;
|
||||
//
|
||||
// filtersGroupBox
|
||||
//
|
||||
this.filtersGroupBox.Controls.Add(this.splitContainer1);
|
||||
this.filtersGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.filtersGroupBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.filtersGroupBox.Name = "filtersGroupBox";
|
||||
this.filtersGroupBox.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.filtersGroupBox.Size = new System.Drawing.Size(623, 285);
|
||||
this.filtersGroupBox.TabIndex = 0;
|
||||
this.filtersGroupBox.TabStop = false;
|
||||
this.filtersGroupBox.Text = "Filters";
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer1.IsSplitterFixed = true;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(3, 16);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
|
||||
this.splitContainer1.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer3);
|
||||
this.splitContainer1.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.splitContainer1.Size = new System.Drawing.Size(617, 266);
|
||||
this.splitContainer1.SplitterDistance = 41;
|
||||
this.splitContainer1.TabIndex = 0;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.comboBox1);
|
||||
this.groupBox1.Controls.Add(this.checkBox1);
|
||||
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(120, 41);
|
||||
this.groupBox1.TabIndex = 0;
|
||||
this.groupBox1.TabStop = false;
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
this.comboBox1.FormattingEnabled = true;
|
||||
this.comboBox1.Location = new System.Drawing.Point(3, 17);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(114, 21);
|
||||
this.comboBox1.TabIndex = 1;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(52, 17);
|
||||
this.checkBox1.TabIndex = 0;
|
||||
this.checkBox1.Text = "Order";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged);
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer2.IsSplitterFixed = true;
|
||||
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer2.Name = "splitContainer2";
|
||||
//
|
||||
// splitContainer2.Panel1
|
||||
//
|
||||
this.splitContainer2.Panel1.Controls.Add(this.groupBox1);
|
||||
this.splitContainer2.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
//
|
||||
// splitContainer2.Panel2
|
||||
//
|
||||
this.splitContainer2.Panel2.Controls.Add(this.groupBox2);
|
||||
this.splitContainer2.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.splitContainer2.Size = new System.Drawing.Size(617, 41);
|
||||
this.splitContainer2.SplitterDistance = 120;
|
||||
this.splitContainer2.TabIndex = 0;
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Controls.Add(this.comboBox2);
|
||||
this.groupBox2.Controls.Add(this.checkBox2);
|
||||
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox2.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(493, 41);
|
||||
this.groupBox2.TabIndex = 0;
|
||||
this.groupBox2.TabStop = false;
|
||||
//
|
||||
// comboBox2
|
||||
//
|
||||
this.comboBox2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.comboBox2.FormattingEnabled = true;
|
||||
this.comboBox2.Location = new System.Drawing.Point(3, 16);
|
||||
this.comboBox2.Name = "comboBox2";
|
||||
this.comboBox2.Size = new System.Drawing.Size(487, 21);
|
||||
this.comboBox2.TabIndex = 1;
|
||||
//
|
||||
// checkBox2
|
||||
//
|
||||
this.checkBox2.AutoSize = true;
|
||||
this.checkBox2.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox2.Name = "checkBox2";
|
||||
this.checkBox2.Size = new System.Drawing.Size(71, 17);
|
||||
this.checkBox2.TabIndex = 0;
|
||||
this.checkBox2.Text = "Workflow";
|
||||
this.checkBox2.UseVisualStyleBackColor = true;
|
||||
this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged);
|
||||
//
|
||||
// splitContainer3
|
||||
//
|
||||
this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer3.IsSplitterFixed = true;
|
||||
this.splitContainer3.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer3.Name = "splitContainer3";
|
||||
this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer3.Panel1
|
||||
//
|
||||
this.splitContainer3.Panel1.Controls.Add(this.groupBox3);
|
||||
//
|
||||
// splitContainer3.Panel2
|
||||
//
|
||||
this.splitContainer3.Panel2.Controls.Add(this.v2SplitContainer);
|
||||
this.splitContainer3.Size = new System.Drawing.Size(617, 221);
|
||||
this.splitContainer3.SplitterDistance = 41;
|
||||
this.splitContainer3.TabIndex = 0;
|
||||
//
|
||||
// groupBox3
|
||||
//
|
||||
this.groupBox3.Controls.Add(this.last30dButton);
|
||||
this.groupBox3.Controls.Add(this.last7dButton);
|
||||
this.groupBox3.Controls.Add(this.yesterdayButton);
|
||||
this.groupBox3.Controls.Add(this.toLabel);
|
||||
this.groupBox3.Controls.Add(this.toDateTimePicker);
|
||||
this.groupBox3.Controls.Add(this.fromLabel);
|
||||
this.groupBox3.Controls.Add(this.fromDateTimePicker);
|
||||
this.groupBox3.Controls.Add(this.checkBox3);
|
||||
this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox3.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox3.Name = "groupBox3";
|
||||
this.groupBox3.Size = new System.Drawing.Size(617, 41);
|
||||
this.groupBox3.TabIndex = 0;
|
||||
this.groupBox3.TabStop = false;
|
||||
//
|
||||
// last30dButton
|
||||
//
|
||||
this.last30dButton.Location = new System.Drawing.Point(553, 15);
|
||||
this.last30dButton.Name = "last30dButton";
|
||||
this.last30dButton.Size = new System.Drawing.Size(62, 23);
|
||||
this.last30dButton.TabIndex = 11;
|
||||
this.last30dButton.Text = "Last 30 d.";
|
||||
this.last30dButton.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// last7dButton
|
||||
//
|
||||
this.last7dButton.Location = new System.Drawing.Point(486, 15);
|
||||
this.last7dButton.Name = "last7dButton";
|
||||
this.last7dButton.Size = new System.Drawing.Size(62, 23);
|
||||
this.last7dButton.TabIndex = 10;
|
||||
this.last7dButton.Text = "Last 7 d.";
|
||||
this.last7dButton.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// yesterdayButton
|
||||
//
|
||||
this.yesterdayButton.Location = new System.Drawing.Point(419, 15);
|
||||
this.yesterdayButton.Name = "yesterdayButton";
|
||||
this.yesterdayButton.Size = new System.Drawing.Size(62, 23);
|
||||
this.yesterdayButton.TabIndex = 9;
|
||||
this.yesterdayButton.Text = "Yesterday";
|
||||
this.yesterdayButton.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// toLabel
|
||||
//
|
||||
this.toLabel.AutoSize = true;
|
||||
this.toLabel.Location = new System.Drawing.Point(225, 20);
|
||||
this.toLabel.Name = "toLabel";
|
||||
this.toLabel.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.toLabel.Size = new System.Drawing.Size(20, 13);
|
||||
this.toLabel.TabIndex = 8;
|
||||
this.toLabel.Text = "To";
|
||||
//
|
||||
// toDateTimePicker
|
||||
//
|
||||
this.toDateTimePicker.Location = new System.Drawing.Point(262, 17);
|
||||
this.toDateTimePicker.Name = "toDateTimePicker";
|
||||
this.toDateTimePicker.Size = new System.Drawing.Size(151, 20);
|
||||
this.toDateTimePicker.TabIndex = 7;
|
||||
//
|
||||
// fromLabel
|
||||
//
|
||||
this.fromLabel.AutoSize = true;
|
||||
this.fromLabel.Location = new System.Drawing.Point(23, 20);
|
||||
this.fromLabel.Name = "fromLabel";
|
||||
this.fromLabel.Size = new System.Drawing.Size(30, 13);
|
||||
this.fromLabel.TabIndex = 6;
|
||||
this.fromLabel.Text = "From";
|
||||
//
|
||||
// fromDateTimePicker
|
||||
//
|
||||
this.fromDateTimePicker.Location = new System.Drawing.Point(59, 17);
|
||||
this.fromDateTimePicker.Name = "fromDateTimePicker";
|
||||
this.fromDateTimePicker.Size = new System.Drawing.Size(151, 20);
|
||||
this.fromDateTimePicker.TabIndex = 5;
|
||||
//
|
||||
// checkBox3
|
||||
//
|
||||
this.checkBox3.AutoSize = true;
|
||||
this.checkBox3.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox3.Name = "checkBox3";
|
||||
this.checkBox3.Size = new System.Drawing.Size(92, 17);
|
||||
this.checkBox3.TabIndex = 0;
|
||||
this.checkBox3.Text = "Date and time";
|
||||
this.checkBox3.UseVisualStyleBackColor = true;
|
||||
this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged);
|
||||
//
|
||||
// v2SplitContainer
|
||||
//
|
||||
this.v2SplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.v2SplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.v2SplitContainer.IsSplitterFixed = true;
|
||||
this.v2SplitContainer.Location = new System.Drawing.Point(0, 0);
|
||||
this.v2SplitContainer.Name = "v2SplitContainer";
|
||||
//
|
||||
// v2SplitContainer.Panel1
|
||||
//
|
||||
this.v2SplitContainer.Panel1.Controls.Add(this.splitContainer8);
|
||||
//
|
||||
// v2SplitContainer.Panel2
|
||||
//
|
||||
this.v2SplitContainer.Panel2.Controls.Add(this.splitContainer4);
|
||||
this.v2SplitContainer.Size = new System.Drawing.Size(617, 176);
|
||||
this.v2SplitContainer.SplitterDistance = 120;
|
||||
this.v2SplitContainer.TabIndex = 0;
|
||||
//
|
||||
// splitContainer8
|
||||
//
|
||||
this.splitContainer8.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer8.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer8.IsSplitterFixed = true;
|
||||
this.splitContainer8.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer8.Name = "splitContainer8";
|
||||
this.splitContainer8.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer8.Panel1
|
||||
//
|
||||
this.splitContainer8.Panel1.Controls.Add(this.groupBox8);
|
||||
//
|
||||
// splitContainer8.Panel2
|
||||
//
|
||||
this.splitContainer8.Panel2.Controls.Add(this.splitContainer9);
|
||||
this.splitContainer8.Size = new System.Drawing.Size(120, 176);
|
||||
this.splitContainer8.SplitterDistance = 41;
|
||||
this.splitContainer8.TabIndex = 0;
|
||||
//
|
||||
// groupBox8
|
||||
//
|
||||
this.groupBox8.Controls.Add(this.comboBox8);
|
||||
this.groupBox8.Controls.Add(this.checkBox8);
|
||||
this.groupBox8.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox8.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox8.Name = "groupBox8";
|
||||
this.groupBox8.Size = new System.Drawing.Size(120, 41);
|
||||
this.groupBox8.TabIndex = 0;
|
||||
this.groupBox8.TabStop = false;
|
||||
//
|
||||
// comboBox8
|
||||
//
|
||||
this.comboBox8.FormattingEnabled = true;
|
||||
this.comboBox8.Location = new System.Drawing.Point(3, 17);
|
||||
this.comboBox8.Name = "comboBox8";
|
||||
this.comboBox8.Size = new System.Drawing.Size(114, 21);
|
||||
this.comboBox8.TabIndex = 1;
|
||||
//
|
||||
// checkBox8
|
||||
//
|
||||
this.checkBox8.AutoSize = true;
|
||||
this.checkBox8.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox8.Name = "checkBox8";
|
||||
this.checkBox8.Size = new System.Drawing.Size(115, 17);
|
||||
this.checkBox8.TabIndex = 0;
|
||||
this.checkBox8.Text = "Housing part name";
|
||||
this.checkBox8.UseVisualStyleBackColor = true;
|
||||
this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox8_CheckedChanged);
|
||||
//
|
||||
// splitContainer9
|
||||
//
|
||||
this.splitContainer9.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer9.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer9.IsSplitterFixed = true;
|
||||
this.splitContainer9.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer9.Name = "splitContainer9";
|
||||
this.splitContainer9.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer9.Panel1
|
||||
//
|
||||
this.splitContainer9.Panel1.Controls.Add(this.groupBox9);
|
||||
this.splitContainer9.Size = new System.Drawing.Size(120, 131);
|
||||
this.splitContainer9.SplitterDistance = 41;
|
||||
this.splitContainer9.TabIndex = 0;
|
||||
//
|
||||
// groupBox9
|
||||
//
|
||||
this.groupBox9.Controls.Add(this.comboBox9);
|
||||
this.groupBox9.Controls.Add(this.checkBox9);
|
||||
this.groupBox9.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox9.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox9.Name = "groupBox9";
|
||||
this.groupBox9.Size = new System.Drawing.Size(120, 41);
|
||||
this.groupBox9.TabIndex = 0;
|
||||
this.groupBox9.TabStop = false;
|
||||
//
|
||||
// comboBox9
|
||||
//
|
||||
this.comboBox9.FormattingEnabled = true;
|
||||
this.comboBox9.Location = new System.Drawing.Point(3, 17);
|
||||
this.comboBox9.Name = "comboBox9";
|
||||
this.comboBox9.Size = new System.Drawing.Size(114, 21);
|
||||
this.comboBox9.TabIndex = 1;
|
||||
//
|
||||
// checkBox9
|
||||
//
|
||||
this.checkBox9.AutoSize = true;
|
||||
this.checkBox9.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox9.Name = "checkBox9";
|
||||
this.checkBox9.Size = new System.Drawing.Size(121, 17);
|
||||
this.checkBox9.TabIndex = 0;
|
||||
this.checkBox9.Text = "eRegister part name";
|
||||
this.checkBox9.UseVisualStyleBackColor = true;
|
||||
this.checkBox9.CheckedChanged += new System.EventHandler(this.checkBox9_CheckedChanged);
|
||||
//
|
||||
// splitContainer4
|
||||
//
|
||||
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer4.IsSplitterFixed = true;
|
||||
this.splitContainer4.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer4.Name = "splitContainer4";
|
||||
this.splitContainer4.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer4.Panel1
|
||||
//
|
||||
this.splitContainer4.Panel1.Controls.Add(this.groupBox4);
|
||||
//
|
||||
// splitContainer4.Panel2
|
||||
//
|
||||
this.splitContainer4.Panel2.Controls.Add(this.splitContainer5);
|
||||
this.splitContainer4.Size = new System.Drawing.Size(493, 176);
|
||||
this.splitContainer4.SplitterDistance = 41;
|
||||
this.splitContainer4.TabIndex = 0;
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Controls.Add(this.comboBox4);
|
||||
this.groupBox4.Controls.Add(this.checkBox4);
|
||||
this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox4.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Size = new System.Drawing.Size(493, 41);
|
||||
this.groupBox4.TabIndex = 0;
|
||||
this.groupBox4.TabStop = false;
|
||||
//
|
||||
// comboBox4
|
||||
//
|
||||
this.comboBox4.FormattingEnabled = true;
|
||||
this.comboBox4.Location = new System.Drawing.Point(3, 17);
|
||||
this.comboBox4.Name = "comboBox4";
|
||||
this.comboBox4.Size = new System.Drawing.Size(200, 21);
|
||||
this.comboBox4.TabIndex = 1;
|
||||
//
|
||||
// checkBox4
|
||||
//
|
||||
this.checkBox4.AutoSize = true;
|
||||
this.checkBox4.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox4.Name = "checkBox4";
|
||||
this.checkBox4.Size = new System.Drawing.Size(88, 17);
|
||||
this.checkBox4.TabIndex = 0;
|
||||
this.checkBox4.Text = "Housing S/N";
|
||||
this.checkBox4.UseVisualStyleBackColor = true;
|
||||
this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged);
|
||||
//
|
||||
// splitContainer5
|
||||
//
|
||||
this.splitContainer5.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer5.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer5.IsSplitterFixed = true;
|
||||
this.splitContainer5.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer5.Name = "splitContainer5";
|
||||
this.splitContainer5.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer5.Panel1
|
||||
//
|
||||
this.splitContainer5.Panel1.Controls.Add(this.groupBox5);
|
||||
//
|
||||
// splitContainer5.Panel2
|
||||
//
|
||||
this.splitContainer5.Panel2.Controls.Add(this.splitContainer6);
|
||||
this.splitContainer5.Size = new System.Drawing.Size(493, 131);
|
||||
this.splitContainer5.SplitterDistance = 41;
|
||||
this.splitContainer5.TabIndex = 0;
|
||||
//
|
||||
// groupBox5
|
||||
//
|
||||
this.groupBox5.Controls.Add(this.comboBox5);
|
||||
this.groupBox5.Controls.Add(this.checkBox5);
|
||||
this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox5.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox5.Name = "groupBox5";
|
||||
this.groupBox5.Size = new System.Drawing.Size(493, 41);
|
||||
this.groupBox5.TabIndex = 0;
|
||||
this.groupBox5.TabStop = false;
|
||||
//
|
||||
// comboBox5
|
||||
//
|
||||
this.comboBox5.FormattingEnabled = true;
|
||||
this.comboBox5.Location = new System.Drawing.Point(3, 17);
|
||||
this.comboBox5.Name = "comboBox5";
|
||||
this.comboBox5.Size = new System.Drawing.Size(200, 21);
|
||||
this.comboBox5.TabIndex = 2;
|
||||
//
|
||||
// checkBox5
|
||||
//
|
||||
this.checkBox5.AutoSize = true;
|
||||
this.checkBox5.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox5.Name = "checkBox5";
|
||||
this.checkBox5.Size = new System.Drawing.Size(109, 17);
|
||||
this.checkBox5.TabIndex = 0;
|
||||
this.checkBox5.Text = "eRegister number";
|
||||
this.checkBox5.UseVisualStyleBackColor = true;
|
||||
this.checkBox5.CheckedChanged += new System.EventHandler(this.checkBox5_CheckedChanged);
|
||||
//
|
||||
// splitContainer6
|
||||
//
|
||||
this.splitContainer6.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer6.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
|
||||
this.splitContainer6.IsSplitterFixed = true;
|
||||
this.splitContainer6.Location = new System.Drawing.Point(0, 0);
|
||||
this.splitContainer6.Name = "splitContainer6";
|
||||
this.splitContainer6.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer6.Panel1
|
||||
//
|
||||
this.splitContainer6.Panel1.Controls.Add(this.groupBox6);
|
||||
//
|
||||
// splitContainer6.Panel2
|
||||
//
|
||||
this.splitContainer6.Panel2.Controls.Add(this.groupBox7);
|
||||
this.splitContainer6.Size = new System.Drawing.Size(493, 86);
|
||||
this.splitContainer6.SplitterDistance = 41;
|
||||
this.splitContainer6.TabIndex = 0;
|
||||
//
|
||||
// groupBox6
|
||||
//
|
||||
this.groupBox6.Controls.Add(this.comboBox6);
|
||||
this.groupBox6.Controls.Add(this.checkBox6);
|
||||
this.groupBox6.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox6.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox6.Name = "groupBox6";
|
||||
this.groupBox6.Size = new System.Drawing.Size(493, 41);
|
||||
this.groupBox6.TabIndex = 0;
|
||||
this.groupBox6.TabStop = false;
|
||||
//
|
||||
// comboBox6
|
||||
//
|
||||
this.comboBox6.FormattingEnabled = true;
|
||||
this.comboBox6.Location = new System.Drawing.Point(3, 17);
|
||||
this.comboBox6.Name = "comboBox6";
|
||||
this.comboBox6.Size = new System.Drawing.Size(200, 21);
|
||||
this.comboBox6.TabIndex = 2;
|
||||
//
|
||||
// checkBox6
|
||||
//
|
||||
this.checkBox6.AutoSize = true;
|
||||
this.checkBox6.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox6.Name = "checkBox6";
|
||||
this.checkBox6.Size = new System.Drawing.Size(90, 17);
|
||||
this.checkBox6.TabIndex = 0;
|
||||
this.checkBox6.Text = "Serial number";
|
||||
this.checkBox6.UseVisualStyleBackColor = true;
|
||||
this.checkBox6.CheckedChanged += new System.EventHandler(this.checkBox6_CheckedChanged);
|
||||
//
|
||||
// groupBox7
|
||||
//
|
||||
this.groupBox7.Controls.Add(this.comboBox7);
|
||||
this.groupBox7.Controls.Add(this.checkBox7);
|
||||
this.groupBox7.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox7.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox7.Name = "groupBox7";
|
||||
this.groupBox7.Size = new System.Drawing.Size(493, 41);
|
||||
this.groupBox7.TabIndex = 0;
|
||||
this.groupBox7.TabStop = false;
|
||||
//
|
||||
// comboBox7
|
||||
//
|
||||
this.comboBox7.FormattingEnabled = true;
|
||||
this.comboBox7.Location = new System.Drawing.Point(3, 17);
|
||||
this.comboBox7.Name = "comboBox7";
|
||||
this.comboBox7.Size = new System.Drawing.Size(200, 21);
|
||||
this.comboBox7.TabIndex = 2;
|
||||
//
|
||||
// checkBox7
|
||||
//
|
||||
this.checkBox7.AutoSize = true;
|
||||
this.checkBox7.Location = new System.Drawing.Point(3, 0);
|
||||
this.checkBox7.Name = "checkBox7";
|
||||
this.checkBox7.Size = new System.Drawing.Size(94, 17);
|
||||
this.checkBox7.TabIndex = 0;
|
||||
this.checkBox7.Text = "Radio address";
|
||||
this.checkBox7.UseVisualStyleBackColor = true;
|
||||
this.checkBox7.CheckedChanged += new System.EventHandler(this.checkBox7_CheckedChanged);
|
||||
//
|
||||
// itemsGroupBox
|
||||
//
|
||||
this.itemsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.itemsGroupBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.itemsGroupBox.Name = "itemsGroupBox";
|
||||
this.itemsGroupBox.Size = new System.Drawing.Size(619, 285);
|
||||
this.itemsGroupBox.TabIndex = 0;
|
||||
this.itemsGroupBox.TabStop = false;
|
||||
this.itemsGroupBox.Text = "Items";
|
||||
//
|
||||
// tabControl
|
||||
//
|
||||
this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl.Name = "tabControl";
|
||||
this.tabControl.SelectedIndex = 0;
|
||||
this.tabControl.Size = new System.Drawing.Size(1246, 422);
|
||||
this.tabControl.TabIndex = 1;
|
||||
this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged);
|
||||
//
|
||||
// statisticsBtn
|
||||
//
|
||||
this.statisticsBtn.Location = new System.Drawing.Point(29, 452);
|
||||
this.statisticsBtn.Name = "statisticsBtn";
|
||||
this.statisticsBtn.Size = new System.Drawing.Size(83, 41);
|
||||
this.statisticsBtn.TabIndex = 11;
|
||||
this.statisticsBtn.Text = "Statistics";
|
||||
this.statisticsBtn.UseVisualStyleBackColor = true;
|
||||
this.statisticsBtn.Click += new System.EventHandler(this.statisticsBtn_Click);
|
||||
//
|
||||
// printQueryResultsBtn
|
||||
//
|
||||
this.printQueryResultsBtn.Enabled = false;
|
||||
this.printQueryResultsBtn.Location = new System.Drawing.Point(8, 396);
|
||||
this.printQueryResultsBtn.Name = "printQueryResultsBtn";
|
||||
this.printQueryResultsBtn.Size = new System.Drawing.Size(125, 28);
|
||||
this.printQueryResultsBtn.TabIndex = 10;
|
||||
this.printQueryResultsBtn.Text = "Print query results";
|
||||
this.printQueryResultsBtn.UseVisualStyleBackColor = true;
|
||||
this.printQueryResultsBtn.Click += new System.EventHandler(this.printQueryResultsBtn_Click);
|
||||
//
|
||||
// exportQueryResultsBtn
|
||||
//
|
||||
this.exportQueryResultsBtn.Location = new System.Drawing.Point(8, 364);
|
||||
this.exportQueryResultsBtn.Name = "exportQueryResultsBtn";
|
||||
this.exportQueryResultsBtn.Size = new System.Drawing.Size(125, 28);
|
||||
this.exportQueryResultsBtn.TabIndex = 9;
|
||||
this.exportQueryResultsBtn.Text = "Export query results";
|
||||
this.exportQueryResultsBtn.UseVisualStyleBackColor = true;
|
||||
this.exportQueryResultsBtn.Click += new System.EventHandler(this.exportQueryResultsBtn_Click);
|
||||
//
|
||||
// formatOfResultsBtn
|
||||
//
|
||||
this.formatOfResultsBtn.Location = new System.Drawing.Point(8, 126);
|
||||
this.formatOfResultsBtn.Name = "formatOfResultsBtn";
|
||||
this.formatOfResultsBtn.Size = new System.Drawing.Size(125, 28);
|
||||
this.formatOfResultsBtn.TabIndex = 4;
|
||||
this.formatOfResultsBtn.Text = "Format of results";
|
||||
this.formatOfResultsBtn.UseVisualStyleBackColor = true;
|
||||
this.formatOfResultsBtn.Click += new System.EventHandler(this.formatOfResultsBtn_Click);
|
||||
//
|
||||
// settingsBtn
|
||||
//
|
||||
this.settingsBtn.Location = new System.Drawing.Point(8, 12);
|
||||
this.settingsBtn.Name = "settingsBtn";
|
||||
this.settingsBtn.Size = new System.Drawing.Size(125, 33);
|
||||
this.settingsBtn.TabIndex = 0;
|
||||
this.settingsBtn.Text = "Settings";
|
||||
this.settingsBtn.UseVisualStyleBackColor = true;
|
||||
this.settingsBtn.Click += new System.EventHandler(this.settingsBtn_Click);
|
||||
//
|
||||
// saveConfigBtn
|
||||
//
|
||||
this.saveConfigBtn.Location = new System.Drawing.Point(8, 157);
|
||||
this.saveConfigBtn.Name = "saveConfigBtn";
|
||||
this.saveConfigBtn.Size = new System.Drawing.Size(125, 28);
|
||||
this.saveConfigBtn.TabIndex = 5;
|
||||
this.saveConfigBtn.Text = "Save configuration";
|
||||
this.saveConfigBtn.UseVisualStyleBackColor = true;
|
||||
this.saveConfigBtn.Click += new System.EventHandler(this.saveConfigBtn_Click);
|
||||
//
|
||||
// loadConfigBtn
|
||||
//
|
||||
this.loadConfigBtn.Location = new System.Drawing.Point(8, 188);
|
||||
this.loadConfigBtn.Name = "loadConfigBtn";
|
||||
this.loadConfigBtn.Size = new System.Drawing.Size(125, 28);
|
||||
this.loadConfigBtn.TabIndex = 6;
|
||||
this.loadConfigBtn.Text = "Load configuration";
|
||||
this.loadConfigBtn.UseVisualStyleBackColor = true;
|
||||
this.loadConfigBtn.Click += new System.EventHandler(this.loadConfigBtn_Click);
|
||||
//
|
||||
// executeQueryBtn
|
||||
//
|
||||
this.executeQueryBtn.Location = new System.Drawing.Point(29, 268);
|
||||
this.executeQueryBtn.Name = "executeQueryBtn";
|
||||
this.executeQueryBtn.Size = new System.Drawing.Size(83, 41);
|
||||
this.executeQueryBtn.TabIndex = 7;
|
||||
this.executeQueryBtn.Text = "Execute query";
|
||||
this.executeQueryBtn.UseVisualStyleBackColor = true;
|
||||
this.executeQueryBtn.Click += new System.EventHandler(this.executeQueryBtn_Click);
|
||||
//
|
||||
// ProductionTracingWnd
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1390, 711);
|
||||
this.Controls.Add(this.vSplitContainer);
|
||||
this.Name = "ProductionTracingWnd";
|
||||
this.Text = "Production Tracing";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ProductionTracingWnd_FormClosing);
|
||||
this.Load += new System.EventHandler(this.ProductionTracingWnd_Load);
|
||||
this.vSplitContainer.Panel1.ResumeLayout(false);
|
||||
this.vSplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.vSplitContainer)).EndInit();
|
||||
this.vSplitContainer.ResumeLayout(false);
|
||||
this.hSplitContainer.Panel1.ResumeLayout(false);
|
||||
this.hSplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.hSplitContainer)).EndInit();
|
||||
this.hSplitContainer.ResumeLayout(false);
|
||||
this.filtersItemsSplitContainer.Panel1.ResumeLayout(false);
|
||||
this.filtersItemsSplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.filtersItemsSplitContainer)).EndInit();
|
||||
this.filtersItemsSplitContainer.ResumeLayout(false);
|
||||
this.filtersGroupBox.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.groupBox2.PerformLayout();
|
||||
this.splitContainer3.Panel1.ResumeLayout(false);
|
||||
this.splitContainer3.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit();
|
||||
this.splitContainer3.ResumeLayout(false);
|
||||
this.groupBox3.ResumeLayout(false);
|
||||
this.groupBox3.PerformLayout();
|
||||
this.v2SplitContainer.Panel1.ResumeLayout(false);
|
||||
this.v2SplitContainer.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.v2SplitContainer)).EndInit();
|
||||
this.v2SplitContainer.ResumeLayout(false);
|
||||
this.splitContainer8.Panel1.ResumeLayout(false);
|
||||
this.splitContainer8.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer8)).EndInit();
|
||||
this.splitContainer8.ResumeLayout(false);
|
||||
this.groupBox8.ResumeLayout(false);
|
||||
this.groupBox8.PerformLayout();
|
||||
this.splitContainer9.Panel1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer9)).EndInit();
|
||||
this.splitContainer9.ResumeLayout(false);
|
||||
this.groupBox9.ResumeLayout(false);
|
||||
this.groupBox9.PerformLayout();
|
||||
this.splitContainer4.Panel1.ResumeLayout(false);
|
||||
this.splitContainer4.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).EndInit();
|
||||
this.splitContainer4.ResumeLayout(false);
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.groupBox4.PerformLayout();
|
||||
this.splitContainer5.Panel1.ResumeLayout(false);
|
||||
this.splitContainer5.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).EndInit();
|
||||
this.splitContainer5.ResumeLayout(false);
|
||||
this.groupBox5.ResumeLayout(false);
|
||||
this.groupBox5.PerformLayout();
|
||||
this.splitContainer6.Panel1.ResumeLayout(false);
|
||||
this.splitContainer6.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer6)).EndInit();
|
||||
this.splitContainer6.ResumeLayout(false);
|
||||
this.groupBox6.ResumeLayout(false);
|
||||
this.groupBox6.PerformLayout();
|
||||
this.groupBox7.ResumeLayout(false);
|
||||
this.groupBox7.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.SplitContainer vSplitContainer;
|
||||
private System.Windows.Forms.SplitContainer hSplitContainer;
|
||||
private System.Windows.Forms.Button saveConfigBtn;
|
||||
private System.Windows.Forms.Button loadConfigBtn;
|
||||
private System.Windows.Forms.Button executeQueryBtn;
|
||||
private System.Windows.Forms.Button settingsBtn;
|
||||
private System.Windows.Forms.GroupBox filtersGroupBox;
|
||||
private System.Windows.Forms.Button exportQueryResultsBtn;
|
||||
private System.Windows.Forms.Button formatOfResultsBtn;
|
||||
private System.Windows.Forms.Button printQueryResultsBtn;
|
||||
private System.Windows.Forms.Button statisticsBtn;
|
||||
private System.Windows.Forms.TabControl tabControl;
|
||||
private System.Windows.Forms.Button wizard2Button;
|
||||
private System.Windows.Forms.Button wizard3Button;
|
||||
private System.Windows.Forms.SplitContainer filtersItemsSplitContainer;
|
||||
private System.Windows.Forms.GroupBox itemsGroupBox;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.CheckBox checkBox2;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.ComboBox comboBox2;
|
||||
private System.Windows.Forms.SplitContainer splitContainer3;
|
||||
private System.Windows.Forms.GroupBox groupBox3;
|
||||
private System.Windows.Forms.Button last30dButton;
|
||||
private System.Windows.Forms.Button last7dButton;
|
||||
private System.Windows.Forms.Button yesterdayButton;
|
||||
private System.Windows.Forms.Label toLabel;
|
||||
private System.Windows.Forms.DateTimePicker toDateTimePicker;
|
||||
private System.Windows.Forms.Label fromLabel;
|
||||
private System.Windows.Forms.DateTimePicker fromDateTimePicker;
|
||||
private System.Windows.Forms.CheckBox checkBox3;
|
||||
private System.Windows.Forms.SplitContainer splitContainer4;
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private System.Windows.Forms.CheckBox checkBox4;
|
||||
private System.Windows.Forms.SplitContainer splitContainer5;
|
||||
private System.Windows.Forms.GroupBox groupBox5;
|
||||
private System.Windows.Forms.CheckBox checkBox5;
|
||||
private System.Windows.Forms.SplitContainer splitContainer6;
|
||||
private System.Windows.Forms.GroupBox groupBox6;
|
||||
private System.Windows.Forms.CheckBox checkBox6;
|
||||
private System.Windows.Forms.GroupBox groupBox7;
|
||||
private System.Windows.Forms.CheckBox checkBox7;
|
||||
private System.Windows.Forms.ComboBox comboBox4;
|
||||
private System.Windows.Forms.ComboBox comboBox5;
|
||||
private System.Windows.Forms.ComboBox comboBox6;
|
||||
private System.Windows.Forms.ComboBox comboBox7;
|
||||
private System.Windows.Forms.SplitContainer v2SplitContainer;
|
||||
private System.Windows.Forms.SplitContainer splitContainer8;
|
||||
private System.Windows.Forms.GroupBox groupBox8;
|
||||
private System.Windows.Forms.ComboBox comboBox8;
|
||||
private System.Windows.Forms.CheckBox checkBox8;
|
||||
private System.Windows.Forms.SplitContainer splitContainer9;
|
||||
private System.Windows.Forms.GroupBox groupBox9;
|
||||
private System.Windows.Forms.ComboBox comboBox9;
|
||||
private System.Windows.Forms.CheckBox checkBox9;
|
||||
}
|
||||
}
|
||||
@@ -1,640 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2016-2022 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Common;
|
||||
using Common.Forms;
|
||||
using SharedDatabase;
|
||||
using SharedDatabase.Entities;
|
||||
using NHibernate;
|
||||
using NHibernate.Criterion;
|
||||
using ProductionTracing.Resources;
|
||||
using System.Globalization;
|
||||
|
||||
namespace ProductionTracing
|
||||
{
|
||||
public partial class ProductionTracingWnd : Form
|
||||
{
|
||||
const string OpenFileDlg_SaveFileDlg_Filter = "{0} (*.que)|*.que|{1} (*.*)|*.*";
|
||||
|
||||
string[] args;
|
||||
FiltersConfig filtersConfig; /// Serializable configuration of filters and displayed results
|
||||
QueryResults currentQR;
|
||||
|
||||
GroupBox[] groupBoxes;
|
||||
CheckBox[] checkBoxes;
|
||||
ComboBox[] comboBoxes;
|
||||
|
||||
public ProductionTracingWnd(string[] args = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
string culture = Program.LocalSettings.Language.Replace('_', '-');
|
||||
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
MessageBox.Show("Selected language is not supported.\nUsing English.",
|
||||
"Warning", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
||||
System.Threading.Thread.CurrentThread.CurrentUICulture =
|
||||
new System.Globalization.CultureInfo("en");
|
||||
}
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
/// enum Filter values 0 1 2 3 4 5 6 7 8
|
||||
groupBoxes = new GroupBox[] { groupBox1, groupBox2, groupBox3, groupBox4, groupBox5, groupBox6, groupBox7, groupBox8, groupBox9 };
|
||||
checkBoxes = new CheckBox[] { checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6, checkBox7, checkBox8, checkBox9 };
|
||||
comboBoxes = new ComboBox[] { comboBox1, comboBox2, null, comboBox4, comboBox5, comboBox6, comboBox7, comboBox8, comboBox9 };
|
||||
|
||||
LocalSettings.PrepareCombo(comboBox1, Program.LocalSettings.Combo1History);
|
||||
LocalSettings.PrepareCombo(comboBox2, Program.LocalSettings.Combo2History);
|
||||
LocalSettings.PrepareCombo(comboBox4, Program.LocalSettings.Combo4History);
|
||||
LocalSettings.PrepareCombo(comboBox5, Program.LocalSettings.Combo5History);
|
||||
LocalSettings.PrepareCombo(comboBox6, Program.LocalSettings.Combo6History);
|
||||
LocalSettings.PrepareCombo(comboBox7, Program.LocalSettings.Combo7History);
|
||||
LocalSettings.PrepareCombo(comboBox8, Program.LocalSettings.Combo8History);
|
||||
LocalSettings.PrepareCombo(comboBox9, Program.LocalSettings.Combo9History);
|
||||
|
||||
for (int i = 0; i < Math.Min(groupBoxes.Length, checkBoxes.Length); i++)
|
||||
{
|
||||
ManageCheckGroupBox(checkBoxes[i],groupBoxes[i]);
|
||||
}
|
||||
|
||||
this.args = args;
|
||||
|
||||
filtersConfig = new FiltersConfig();
|
||||
}
|
||||
|
||||
private void ProductionTracingWnd_Load(object sender, EventArgs e)
|
||||
{
|
||||
LocalSettings ls = Program.LocalSettings;
|
||||
|
||||
Width = (ls.MainWndWidth > 0) ? ls.MainWndWidth : 1000;
|
||||
Height = (ls.MainWndHeight > 0) ? ls.MainWndHeight : 750;
|
||||
Left = (ls.MainWndLeft != 0) ? ls.MainWndLeft : 50;
|
||||
Top = (ls.MainWndTop != 0) ? ls.MainWndTop : 50;
|
||||
|
||||
Localize();
|
||||
|
||||
if (args != null && args.Length == 1 && args[0].IndexOf(".que") == args[0].Length - 4)
|
||||
LoadConfigFromFile(args[0]);
|
||||
else if (!string.IsNullOrEmpty(Program.LocalSettings.LastConfigFileName))
|
||||
LoadConfigFromFile(Program.LocalSettings.LastConfigFileName);
|
||||
else
|
||||
Text = string.Format("{0} ver.{1}", Strings.Production_Tracing, Program.Version);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Localize strings
|
||||
/// </summary>
|
||||
void Localize()
|
||||
{
|
||||
filtersGroupBox.Text = Strings.Filters;
|
||||
itemsGroupBox.Text = Strings.Items;
|
||||
settingsBtn.Text = Strings.Settings;
|
||||
loadConfigBtn.Text = Strings.Load_configuration;
|
||||
saveConfigBtn.Text = Strings.Save_configuration;
|
||||
executeQueryBtn.Text = Strings.Execute_query;
|
||||
formatOfResultsBtn.Text = Strings.Format_of_results;
|
||||
exportQueryResultsBtn.Text = Strings.Export_query_results;
|
||||
printQueryResultsBtn.Text = Strings.Print_query_results;
|
||||
statisticsBtn.Text = Strings.Statistics;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Open 'Settings' dialog and update UI
|
||||
/// </summary>
|
||||
private void settingsBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (new Forms.SettingsDlg(Program.LocalSettings).ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
/// TODO (connection string might have changed)
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load configuration from a file
|
||||
/// </summary>
|
||||
private void loadConfigBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog dlg = new OpenFileDialog();
|
||||
dlg.Filter = string.Format(OpenFileDlg_SaveFileDlg_Filter, Strings.Query_files, Strings.All_files);
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
LoadConfigFromFile(dlg.FileName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Load configuration from a file and apply it
|
||||
/// </summary>
|
||||
/// <param name="fileName">Configuration file name</param>
|
||||
void LoadConfigFromFile(string fileName)
|
||||
{
|
||||
FiltersConfig localFiltersConfig = FiltersConfig.Load(fileName);
|
||||
if (localFiltersConfig != null)
|
||||
{
|
||||
filtersConfig = localFiltersConfig;
|
||||
|
||||
/// TODO
|
||||
}
|
||||
|
||||
Program.LocalSettings.LastConfigFileName = fileName;
|
||||
Program.LocalSettings.Save();
|
||||
Text = string.Format("{0} ver.{1} ({2})", Strings.Production_Tracing, Program.Version, Program.LocalSettings.LastConfigFileName);
|
||||
}
|
||||
|
||||
private void saveConfigBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
/// Save the file
|
||||
SaveFileDialog dlg = new SaveFileDialog();
|
||||
if (!string.IsNullOrEmpty(Program.LocalSettings.LastConfigFileName))
|
||||
{
|
||||
dlg.FileName = Program.LocalSettings.LastConfigFileName;
|
||||
}
|
||||
dlg.Filter = string.Format(OpenFileDlg_SaveFileDlg_Filter, Strings.Query_files, Strings.All_files);
|
||||
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
filtersConfig.Save(dlg.FileName);
|
||||
|
||||
Program.LocalSettings.LastConfigFileName = dlg.FileName;
|
||||
Program.LocalSettings.Save();
|
||||
Text = string.Format("{0} ver.{1} ({2})", Strings.Production_Tracing, Program.Version, Program.LocalSettings.LastConfigFileName);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAndSaveHistory()
|
||||
{
|
||||
LocalSettings ls = Program.LocalSettings;
|
||||
|
||||
if (checkBox1.Checked) ls.UpdateHistory(comboBox1.Text, ref ls.Combo1History);
|
||||
if (checkBox2.Checked) ls.UpdateHistory(comboBox2.Text, ref ls.Combo2History);
|
||||
if (checkBox4.Checked) ls.UpdateHistory(comboBox4.Text, ref ls.Combo4History);
|
||||
if (checkBox5.Checked) ls.UpdateHistory(comboBox5.Text, ref ls.Combo5History);
|
||||
if (checkBox6.Checked) ls.UpdateHistory(comboBox6.Text, ref ls.Combo6History);
|
||||
if (checkBox7.Checked) ls.UpdateHistory(comboBox7.Text, ref ls.Combo7History);
|
||||
if (checkBox8.Checked) ls.UpdateHistory(comboBox8.Text, ref ls.Combo8History);
|
||||
if (checkBox9.Checked) ls.UpdateHistory(comboBox9.Text, ref ls.Combo9History);
|
||||
|
||||
ls.Save();
|
||||
}
|
||||
|
||||
private void executeQueryBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
UpdateAndSaveHistory();
|
||||
|
||||
Thread thread = new Thread(() => Application.Run(new Common.Forms.ModelessForm(Strings.searching)));
|
||||
thread.CurrentCulture = CultureInfo.CurrentCulture;
|
||||
thread.CurrentUICulture = CultureInfo.CurrentUICulture;
|
||||
thread.Start();
|
||||
|
||||
string currentConnStr = Program.LocalSettings.ConnectionString;
|
||||
string[] elems = currentConnStr.Split(new char[] { '=', ';' });
|
||||
string description = string.Format("{1}/{2}", tabControl.TabPages.Count + 1, (elems.Length > 1 ? elems[1] : "-"), (elems.Length > 3 ? elems[3] : "-"));
|
||||
|
||||
currentQR = new QueryResults(currentConnStr, description);
|
||||
ISession session = null;
|
||||
|
||||
try
|
||||
{
|
||||
/// Load query result items
|
||||
IList<ItemSpec> items = ItemSpec.FromStrArray(filtersConfig.ResultItems);
|
||||
items.Insert(0, new ItemSpec(ItemSpecID.RefRecordId, Strings.RefRecordId, ItemCaps.RefRecord, (x, f, p, w) => ((int)x).ToString()));
|
||||
|
||||
/// New database session
|
||||
using (session = TracingDB.CreateSession(currentConnStr))
|
||||
{
|
||||
currentQR.Results = DoOneQuery(session, items);
|
||||
currentQR.ProjectedItems = items;
|
||||
session.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
if (session != null && session.IsOpen) session.Close();
|
||||
Common.Forms.ModelessForm.CloseForm();
|
||||
MessageBox.Show(exc.Message,
|
||||
Strings.Error,
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
currentQR.EndTime = DateTime.Now;
|
||||
TabPage newTabPage = CreateTabPage(currentQR);
|
||||
tabControl.TabPages.Add(newTabPage);
|
||||
tabControl.SelectTab(newTabPage);
|
||||
|
||||
Common.Forms.ModelessForm.CloseForm();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Execute a chain of all filters once (without a loop)
|
||||
/// </summary>
|
||||
/// <param name="items">Result items</param>
|
||||
IList<object[]> DoOneQuery(ISession session, IList<ItemSpec> items)
|
||||
{
|
||||
ReferenceRecord refRecord = null;
|
||||
IQueryOver<ReferenceRecord, ReferenceRecord> query = session.QueryOver<ReferenceRecord>(() => refRecord);
|
||||
|
||||
int ix;
|
||||
ix = (int)Idx.Code1; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code1 == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.Code2; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code2 == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.Code3; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code3 == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.Code4; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code4 == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.Order; if (checkBoxes[ix].Checked) query = query.Where(x => x.POName == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.Name1; if (checkBoxes[ix].Checked) query = query.Where(x => x.Name1 == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.Name2; if (checkBoxes[ix].Checked) query = query.Where(x => x.Name2 == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.Workflow; if (checkBoxes[ix].Checked) query = query.Where(x => x.Workflow == comboBoxes[ix].Text);
|
||||
ix = (int)Idx.DateTime; if (checkBoxes[ix].Checked)
|
||||
{
|
||||
DateTime from;
|
||||
DateTime to;
|
||||
GetDateRange(Selection.Other, fromDateTimePicker.Value.Date,
|
||||
toDateTimePicker.Value.Date.AddDays(1).AddTicks(-1), out from, out to);
|
||||
query = query.WhereRestrictionOn(rr => rr.Timestamp).IsBetween(from).And(to);
|
||||
}
|
||||
|
||||
Record record = null;
|
||||
StepRecord stepRecord = null;
|
||||
ProjectionList projections = ItemSpec.GetProjections(items, refRecord, stepRecord, record);
|
||||
|
||||
IList<object[]> result = query.Select(projections).List<object[]>();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Create a new Tab page with and fill it with query results
|
||||
/// </summary>
|
||||
/// <param name="results">Query results</param>
|
||||
/// <returns>A new tab page</returns>
|
||||
TabPage CreateTabPage(QueryResults results)
|
||||
{
|
||||
///
|
||||
/// Prepare a new list view control with query results
|
||||
///
|
||||
Common.Forms.ListViewEx listView = new Common.Forms.ListViewEx();
|
||||
listView.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
listView.FullRowSelect = true;
|
||||
listView.GridLines = true;
|
||||
listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Clickable;
|
||||
listView.Location = new System.Drawing.Point(3, 16);
|
||||
listView.Name = results.Description;
|
||||
listView.Size = new System.Drawing.Size(411, 144);
|
||||
listView.TabIndex = 0;
|
||||
listView.UseCompatibleStateImageBehavior = false;
|
||||
listView.View = System.Windows.Forms.View.Details;
|
||||
listView.DoubleClick += new System.EventHandler(listView_DoubleClick);
|
||||
listView.ColumnClick += new ColumnClickEventHandler(listView_ColumnClick);
|
||||
RedrawResults(results, listView);
|
||||
|
||||
///
|
||||
/// Create a new tab page and add the just created list view control into it
|
||||
///
|
||||
TabPage newTabPage = new TabPage(string.Format("{0} ({1})", results.Description, results.Results.Count));
|
||||
newTabPage.Controls.Add(listView);
|
||||
newTabPage.Tag = results;
|
||||
|
||||
return newTabPage;
|
||||
}
|
||||
|
||||
|
||||
private void formatOfResultsBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
Forms.TracingConfigDlg dlg = new Forms.TracingConfigDlg();
|
||||
dlg.Compound = false;
|
||||
dlg.SelectedItems = ItemSpec.FromStrArray(filtersConfig.ResultItems);
|
||||
dlg.AvailableItems = new List<ItemSpec>();
|
||||
foreach (var v in ItemSpec.AllItems) dlg.AvailableItems.Add(v);
|
||||
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
filtersConfig.ResultItems = ItemSpec.ToStrArray(dlg.SelectedItems);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Displays obtained results as configured by result items in the ListView
|
||||
/// </summary>
|
||||
void RedrawResults(QueryResults results, ListView listView)
|
||||
{
|
||||
IList<ItemSpec> items = results.ProjectedItems;
|
||||
|
||||
listView.Clear();
|
||||
if (results == null || results.Results == null || results.Results.Count == 0 || items == null || items.Count == 0) return;
|
||||
|
||||
try
|
||||
{
|
||||
if (items.Count >= 2)
|
||||
{
|
||||
/// 1st item (=item[0]) is ref. record ID and it is not displayed, it is copied to lvi.tag
|
||||
for (int i = 1; i < items.Count; i++)
|
||||
{
|
||||
listView.Columns.Add(items[i].Caption, (filtersConfig.ResultsClmnCount > i) ? filtersConfig.ResultsClmnWidths[i] : 70);
|
||||
}
|
||||
foreach (var resItems in results.Results)
|
||||
{
|
||||
ListViewItem lvi = new ListViewItem(items[1].Print(resItems[1]));
|
||||
for (int i = 2; i < items.Count; i++) lvi.SubItems.Add(items[i].Print(resItems[i]));
|
||||
lvi.Tag = resItems[0];
|
||||
listView.Items.Add(lvi);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
MessageBox.Show(exc.Message, Strings.Error_displaying_results, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void exportQueryResultsBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (currentQR == null || currentQR.Results == null || currentQR.Results.Count == 0
|
||||
|| currentQR.ProjectedItems == null || currentQR.ProjectedItems.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SaveFileDialog dlg = new SaveFileDialog();
|
||||
dlg.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*";
|
||||
|
||||
if (dlg.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
IList<ItemSpec> items = currentQR.ProjectedItems;
|
||||
|
||||
try
|
||||
{
|
||||
using (TextWriter writer = new StreamWriter(dlg.FileName, false, Encoding.UTF8))
|
||||
{
|
||||
for (int i = 1; i < items.Count; i++)
|
||||
{
|
||||
writer.Write(items[i].Caption);
|
||||
|
||||
if (i == items.Count - 1)
|
||||
writer.WriteLine();
|
||||
else
|
||||
writer.Write(";");
|
||||
}
|
||||
foreach (var resItems in currentQR.Results)
|
||||
{
|
||||
for (int i = 1; i < items.Count; i++)
|
||||
{
|
||||
writer.Write(items[i].Export(resItems[i]));
|
||||
|
||||
if (i == items.Count - 1)
|
||||
writer.WriteLine();
|
||||
else
|
||||
writer.Write(";");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
MessageBox.Show(exc.Message, Strings.Error_exporting_results, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void printQueryResultsBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
// if (referenceRecords == null || referenceRecords.Count == 0) return;
|
||||
|
||||
/// TODO: Reimplement
|
||||
//foreach (var wm in referenceRecords)
|
||||
//{
|
||||
// new Results.Output.Printers.Munich.MunichPrintDocument("", wm, Config.Entities.PageOrientation.Portrait).Print();
|
||||
//}
|
||||
}
|
||||
|
||||
private void statisticsBtn_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (currentQR == null || currentQR.Results == null || currentQR.Results.Count == 0
|
||||
|| currentQR.ProjectedItems == null || currentQR.ProjectedItems.Count == 0)
|
||||
{
|
||||
MessageBox.Show("Žiadne výsledky vyhľadávania", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
||||
return;
|
||||
}
|
||||
|
||||
///
|
||||
/// Enter options
|
||||
///
|
||||
Forms.StatisticsOptionsDlg dlg = new Forms.StatisticsOptionsDlg(currentQR.ProjectedItems);
|
||||
if (dlg.ShowDialog() != DialogResult.OK) return;
|
||||
|
||||
///
|
||||
/// Calculate statistics
|
||||
///
|
||||
Forms.StatisticsDlg statisticsDlg = new Forms.StatisticsDlg(currentQR, dlg.TwoDim, dlg.RowItemIx, dlg.ColumnItemIx, dlg.FilterEnabled, dlg.FilteredItemIx, dlg.FilteredValue);
|
||||
statisticsDlg.Show();
|
||||
}
|
||||
|
||||
|
||||
private void ProductionTracingWnd_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
LocalSettings ls = Program.LocalSettings;
|
||||
|
||||
ls.MainWndMaximized = (WindowState == FormWindowState.Maximized);
|
||||
if (WindowState == FormWindowState.Normal)
|
||||
{
|
||||
ls.MainWndLeft = Location.X;
|
||||
ls.MainWndTop = Location.Y;
|
||||
ls.MainWndWidth = Size.Width;
|
||||
ls.MainWndHeight = Size.Height;
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Maximized or minimized (when restarted, minimized window is restored as normal)
|
||||
ls.MainWndLeft = RestoreBounds.Left;
|
||||
ls.MainWndTop = RestoreBounds.Top;
|
||||
ls.MainWndWidth = RestoreBounds.Width;
|
||||
ls.MainWndHeight = RestoreBounds.Height;
|
||||
}
|
||||
|
||||
ls.Save();
|
||||
}
|
||||
|
||||
|
||||
private void tabControl_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
currentQR = tabControl.SelectedTab.Tag as QueryResults;
|
||||
}
|
||||
|
||||
|
||||
private void listView_DoubleClick(object sender, EventArgs e)
|
||||
{
|
||||
ListView resultsListView = sender as ListView;
|
||||
|
||||
/// Double click works when just one item is selected
|
||||
if (resultsListView != null && resultsListView.SelectedIndices.Count == 1)
|
||||
{
|
||||
int ix = resultsListView.SelectedIndices[0];
|
||||
int refRecordID = (int)resultsListView.Items[ix].Tag;
|
||||
if (refRecordID == 0) return;
|
||||
|
||||
using (ISession session = TracingDB.CreateSession(Program.LocalSettings.ConnectionString))
|
||||
{
|
||||
new Forms.MoreInfoDlg(refRecordID, session).ShowDialog();
|
||||
session.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void listView_ColumnClick(object sender, ColumnClickEventArgs e)
|
||||
{
|
||||
Common.Forms.ListViewEx listViewEx = sender as Common.Forms.ListViewEx;
|
||||
if (listViewEx == null) return;
|
||||
|
||||
if (e.Column == listViewEx.SortColumn)
|
||||
{
|
||||
listViewEx.SortOrder = (listViewEx.SortOrder == MySortOrder.Ascending) ? MySortOrder.Descending : MySortOrder.Ascending;
|
||||
}
|
||||
else
|
||||
{
|
||||
/// Clicked on another column header => set sortOrder to SortOrder.Ascending
|
||||
listViewEx.SortColumn = e.Column;
|
||||
listViewEx.SortOrder = MySortOrder.Ascending;
|
||||
}
|
||||
|
||||
listViewEx.ListViewItemSorter = new LviTextColumnComparer(listViewEx.SortColumn, listViewEx.SortOrder);
|
||||
|
||||
ListViewExtensions.SetSortIcon(listViewEx, listViewEx.SortColumn, listViewEx.SortOrder);
|
||||
listViewEx.Sort();
|
||||
}
|
||||
|
||||
void GetDateRange(Selection selection, DateTime uiFrom, DateTime uiTo, out DateTime from, out DateTime to)
|
||||
{
|
||||
DateTime now = DateTime.Now.Date;
|
||||
|
||||
if (selection == Selection.Today)
|
||||
{
|
||||
from = now.Date;
|
||||
to = from.AddDays(1).AddTicks(-1);
|
||||
}
|
||||
else if (selection == Selection.Yesterday)
|
||||
{
|
||||
from = now.Date.AddDays(-1);
|
||||
to = from.AddDays(1).AddTicks(-1);
|
||||
}
|
||||
else if (selection == Selection.ThisWeek)
|
||||
{
|
||||
from = now.Date.AddDays(-GetDayOfWeek0(now));
|
||||
to = from.AddDays(7).AddTicks(-1);
|
||||
}
|
||||
else if (selection == Selection.LastWeek)
|
||||
{
|
||||
from = now.Date.AddDays(-GetDayOfWeek0(now) - 7);
|
||||
to = from.AddDays(7).AddTicks(-1);
|
||||
}
|
||||
else if (selection == Selection.ThisMonth)
|
||||
{
|
||||
from = now.Date.AddDays(1 - now.Day);
|
||||
to = now.Date.AddDays(1).AddTicks(-1);
|
||||
}
|
||||
else if (selection == Selection.LastMonth)
|
||||
{
|
||||
int daysLastMonth = (now.Month > 1) ? DateTime.DaysInMonth(now.Year, now.Month - 1)
|
||||
: DateTime.DaysInMonth(now.Year - 1, 12);
|
||||
from = now.Date.AddDays(1 - now.Day - daysLastMonth);
|
||||
to = from.AddDays(daysLastMonth).AddTicks(-1);
|
||||
}
|
||||
else if (selection == Selection.ThisYear)
|
||||
{
|
||||
from = new DateTime(now.Year, 1, 1);
|
||||
to = now.Date.AddDays(1).AddTicks(-1);
|
||||
}
|
||||
else if (selection == Selection.LastYear)
|
||||
{
|
||||
from = new DateTime(now.Year - 1, 1, 1);
|
||||
to = new DateTime(now.Year, 1, 1).AddTicks(-1);
|
||||
}
|
||||
else /// Values for Selection.Other
|
||||
{
|
||||
from = uiFrom;
|
||||
to = uiTo;
|
||||
}
|
||||
|
||||
//int Offset = 0;
|
||||
//from = from.AddHours(Offset);
|
||||
//to = to.AddHours(Offset);
|
||||
}
|
||||
|
||||
int GetDayOfWeek0(DateTime dateTime)
|
||||
{
|
||||
switch (dateTime.DayOfWeek)
|
||||
{
|
||||
default:
|
||||
case DayOfWeek.Monday: return 0;
|
||||
case DayOfWeek.Tuesday: return 1;
|
||||
case DayOfWeek.Wednesday: return 2;
|
||||
case DayOfWeek.Thursday: return 3;
|
||||
case DayOfWeek.Friday: return 4;
|
||||
case DayOfWeek.Saturday: return 5;
|
||||
case DayOfWeek.Sunday: return 6;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkBox1_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox1, groupBox1); }
|
||||
private void checkBox2_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox2, groupBox2); }
|
||||
private void checkBox3_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox3, groupBox3); }
|
||||
private void checkBox4_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox4, groupBox4); }
|
||||
private void checkBox5_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox5, groupBox5); }
|
||||
private void checkBox6_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox6, groupBox6); }
|
||||
private void checkBox7_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox7, groupBox7); }
|
||||
private void checkBox8_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox8, groupBox8); }
|
||||
private void checkBox9_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox9, groupBox9); }
|
||||
|
||||
private void ManageCheckGroupBox(CheckBox chk, GroupBox grp)
|
||||
{
|
||||
/// Make sure the CheckBox isn't in the GroupBox. This will only happen the first time.
|
||||
if (chk.Parent == grp)
|
||||
{
|
||||
grp.Parent.Controls.Add(chk); /// Reparent the CheckBox so it's not in the GroupBox.
|
||||
chk.Location = new Point(chk.Left + grp.Left, chk.Top + grp.Top); /// Adjust the CheckBox's location.
|
||||
chk.BringToFront(); /// Move the CheckBox to the top of the stacking order.
|
||||
}
|
||||
|
||||
/// Enable or disable the GroupBox.
|
||||
grp.Enabled = chk.Checked;
|
||||
}
|
||||
}
|
||||
|
||||
enum Idx
|
||||
{
|
||||
Order, /// 0 = checkBox1, comboBox1
|
||||
Workflow, /// 1 = checkBox2, comboBox2
|
||||
DateTime, /// 2 = checkBox3
|
||||
Code1, /// 3 = checkBox4, comboBox4
|
||||
Code2, /// 4 = checkBox5, comboBox5
|
||||
Code3, /// 5 = checkBox6, comboBox6
|
||||
Code4, /// 6 = checkBox7, comboBox7
|
||||
Name1, /// 7 = checkBox8, comboBox8
|
||||
Name2, /// 8 = checkBox9, comboBox9
|
||||
}
|
||||
|
||||
enum Selection
|
||||
{
|
||||
Today,
|
||||
Yesterday,
|
||||
ThisWeek,
|
||||
LastWeek,
|
||||
ThisMonth,
|
||||
LastMonth,
|
||||
ThisYear,
|
||||
LastYear,
|
||||
Other,
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user