555 lines
17 KiB
C#
555 lines
17 KiB
C#
namespace Xylem.Common.Ui.GenesisToolBox
|
|
{
|
|
using global::GenesisToolBox;
|
|
|
|
using System;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
|
|
using CommonCore.Consts;
|
|
using Ctls;
|
|
using Infrastructure;
|
|
using Utils.Logging;
|
|
|
|
internal delegate void UpdateLayout();
|
|
|
|
/// <inheritdoc />
|
|
public partial class FrmMainForm : Form
|
|
{
|
|
/// <summary>
|
|
/// Ctor
|
|
/// </summary>
|
|
public FrmMainForm()
|
|
{
|
|
InitializeComponent();
|
|
InitializeFormState();
|
|
|
|
optionsMenuItem.Text = Software.UserName;
|
|
Text = $"{Text} {SoftwareVersion.Current.VersionString}";
|
|
var logger = NLogHelper.CreateOrGetLogger("GenesisToolBox");
|
|
logger.Info($"GenesisToolBox {SoftwareVersion.Current}");
|
|
|
|
//bool valid = false;
|
|
|
|
//using (System.DirectoryServices.AccountManagement.PrincipalContext context = new PrincipalContext(ContextType.Domain))
|
|
//{
|
|
|
|
// valid = context.ValidateCredentials("drabesch_ro", "password");
|
|
//}
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
public sealed override String Text
|
|
{
|
|
get => base.Text;
|
|
set => base.Text = value;
|
|
}
|
|
|
|
private void btnSetup_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmSetup();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void Form_Closed(Object sender, EventArgs e)
|
|
{
|
|
Show();
|
|
}
|
|
|
|
private void btnPassword_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmPassword();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnRegisterStore_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmRegisterStore();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
|
|
|
|
private void FrmMainForm_Load(Object sender, EventArgs e)
|
|
{
|
|
Boolean access;
|
|
|
|
try
|
|
{
|
|
access = Logic.SoftwareAccessHelper.Access.HasAccess(SoftwareVersion.Current.AssemblyName);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("GenesisToolBox\n\n" +
|
|
"Starting in OfflineMode\n\n" +
|
|
"Your version (NA) could not be verified!\n\n" +
|
|
ex.Message);
|
|
|
|
Close();
|
|
CheckConfigs();
|
|
foreach (var item in Controls)
|
|
{
|
|
if (item is Button btn)
|
|
{
|
|
btn.Enabled = btn.Name == btnSetup.Name || btn.Name == btnRegisterStore.Name;
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
if (!access)
|
|
{
|
|
MessageBox.Show("GenesisToolBox\n\n" +
|
|
"Your version licence is expired!\n\n" +
|
|
SoftwareVersion.Current);
|
|
|
|
Close();
|
|
}
|
|
|
|
//if (System.Diagnostics.Debugger.IsAttached)
|
|
//{
|
|
// btnFiles.Enabled = true;
|
|
//}
|
|
|
|
CheckConfigs();
|
|
|
|
//if (false)
|
|
//{
|
|
|
|
|
|
|
|
// gpLAA.Enabled = false;
|
|
// gbDeveloper.Enabled = false;
|
|
|
|
|
|
// foreach (var item in gpGerneral.Controls)
|
|
// {
|
|
// if (item is Button btn)
|
|
// {
|
|
// btn.Enabled = false;
|
|
// }
|
|
// }
|
|
// btnPressure.Enabled = true;
|
|
//}
|
|
|
|
}
|
|
|
|
private void CheckConfigs()
|
|
{
|
|
var applicationDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
|
|
var genesisFolder = Directory.CreateDirectory(Path.Combine(applicationDataFolder, "Genesis")).FullName;
|
|
|
|
var nLogFile = Path.Combine(genesisFolder, ProgramConfig.NlogConfig);
|
|
|
|
if (!File.Exists(nLogFile))
|
|
{
|
|
try
|
|
{
|
|
File.Copy(ProgramConfig.NlogConfig, nLogFile);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
MessageBox.Show(@"Unable to create log files!");
|
|
}
|
|
}
|
|
|
|
var configFile = Path.Combine(genesisFolder, ProgramConfig.SerialConfigFileName);
|
|
|
|
if (!File.Exists(configFile))
|
|
{
|
|
btnRegisterStore.Enabled = false;
|
|
btnPassword.Enabled = false;
|
|
var text = "Configuration file cannot be found!\nExecute setup.";
|
|
MessageBox.Show(text);
|
|
}
|
|
}
|
|
|
|
//private void BtnLegacyTestApp_Click(Object sender, EventArgs e)
|
|
//{
|
|
// var form = new FrmLegacyTestApp();
|
|
// form.Show();
|
|
// form.Closed += Form_Closed;
|
|
// Hide();
|
|
//}
|
|
|
|
private void btnAlarm_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmAlarmMng();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnTempLogger_Click(Object sender, EventArgs e)
|
|
{
|
|
//String command = " -h"; //common help flag for console apps
|
|
//System.Diagnostics.Process pRun;
|
|
//pRun = new System.Diagnostics.Process();
|
|
//pRun.EnableRaisingEvents = true;
|
|
//pRun.Exited += new EventHandler(pRun_Exited);
|
|
//pRun.StartInfo.FileName = "TempLogger.exe";
|
|
//pRun.StartInfo.Arguments = command;
|
|
//pRun.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
|
|
|
|
//pRun.Start();
|
|
//pRun.WaitForExit();
|
|
|
|
var form = new FrmTempMeter();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
|
|
}
|
|
|
|
//private void pRun_Exited(Object sender, EventArgs e)
|
|
//{
|
|
// //Do Something Here
|
|
//}
|
|
|
|
private void btnRelatePCbID_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmResearchMapping();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnStreamingQuality_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmStreamingQuality();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnFwUpdate_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmFwUpdate();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnCalender_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new frmCalenderSeconds();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnCustomerText_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmConfigurations();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnFiles_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmFileCURD();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
//private void btnFWMulti_Click(object sender, EventArgs e)
|
|
//{
|
|
// var form = new FrmMultiUpdate();
|
|
// form.Show();
|
|
// form.Closed += Form_Closed;
|
|
// Hide();
|
|
//}
|
|
|
|
private void btnRegHistory_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmRegisterHistory();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnCalibrationResult_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmRawDataInterpreter();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void BtnFileSplit_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmLogSplit();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnPara_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmParameterization();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnLegacyTestApp_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmLegacyTestApp();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnPressure_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmPressure();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void button1_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmLog();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void button2_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmTempMeter();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void gbDeveloper_Enter(Object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void button2_Click_1(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmProductionData();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnLutUpdate_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmLutUpdate();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void button4_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmLutManagement();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void button5_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmMasterMapping();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void button1_Click_1(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmConfigurations();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
private void btnLog_Click(Object sender, EventArgs e)
|
|
{
|
|
var form = new FrmLowLevelTools();
|
|
form.Show();
|
|
form.Closed += Form_Closed;
|
|
Hide();
|
|
}
|
|
|
|
#region Form initialization
|
|
|
|
/// <summary>
|
|
/// Hides all currently available controls from the main window.
|
|
/// </summary>
|
|
private void HideContent()
|
|
{
|
|
foreach (var control in Controls)
|
|
{
|
|
if (control is GroupBox groupBox)
|
|
{
|
|
groupBox.Hide();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gives all buttons that pointing to software function or other forms, tag with specific software function.
|
|
/// </summary>
|
|
private void SetSoftwareFunctions()
|
|
{
|
|
btnSetup.Tag = SoftwareFunctions.GENERAL_SETUP;
|
|
btnAlarm.Tag = SoftwareFunctions.GENERAL_ALARM;
|
|
btnRegisterStore.Tag = SoftwareFunctions.GENERAL_REGISTER_STORE;
|
|
btnTempLogger.Tag = SoftwareFunctions.GENERAL_TEMP_METER;
|
|
btnStreamingQuality.Tag = SoftwareFunctions.GENERAL_STREAM_QUALITY;
|
|
btnFwUpdate.Tag = SoftwareFunctions.GENERAL_FIRMWARE_UPDATE;
|
|
btnLutUpdate.Tag = SoftwareFunctions.GENERAL_LUT_UPDATE;
|
|
button4.Tag = SoftwareFunctions.GENERAL_LUT_MANAGEMENT;
|
|
btnPressure.Tag = SoftwareFunctions.GENERAL_PRESSURE_LOG;
|
|
button1.Tag = SoftwareFunctions.GENERAL_PULS_CONFIG;
|
|
|
|
btnPassword.Tag = SoftwareFunctions.LAA_PASSWORD;
|
|
btnRegHistory.Tag = SoftwareFunctions.LAA_REGISTER_HISTORY;
|
|
btnPara.Tag = SoftwareFunctions.LAA_PARAMETERIZATION;
|
|
button2.Tag = SoftwareFunctions.LAA_PROCESS_PARAMETER;
|
|
button5.Tag = SoftwareFunctions.LAA_MAPPING_NA;
|
|
|
|
btnLegacyTestApp.Tag = SoftwareFunctions.DEV_LEGACY_TEST_APP;
|
|
btnFiles.Tag = SoftwareFunctions.DEV_FILE_CONTROL;
|
|
BtnFileSplit.Tag = SoftwareFunctions.DEV_FILE_SPLIT;
|
|
btnLowLevelTools.Tag = SoftwareFunctions.DEV_LOW_LEVEL_TOOLS;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Sets a label with error message that says the UI is not available.
|
|
/// </summary>
|
|
private void UINotAvailable()
|
|
{
|
|
Controls.Add(new Label()
|
|
{
|
|
Dock = DockStyle.Fill,
|
|
Text = "Genesis toolbox is currently not available.",
|
|
TextAlign = ContentAlignment.MiddleCenter,
|
|
Font = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold),
|
|
ForeColor = Color.DarkRed,
|
|
Padding = new Padding(15)
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// Shows all UI controls. Sets control enabled or disabled, having tag that is from type SoftwareFunctions.
|
|
/// For DEBUGGING all buttons will be enabled!
|
|
/// </summary>
|
|
private void ShowAvailableSoftwareFunctions()
|
|
{
|
|
foreach (var control in Controls)
|
|
{
|
|
if (control is GroupBox groupBox)
|
|
{
|
|
foreach (var groupBoxControl in groupBox.Controls)
|
|
{
|
|
if (groupBoxControl is Button button)
|
|
{
|
|
if (button.Tag is SoftwareFunctions softwareFunction)
|
|
{
|
|
// enable all buttons for DEBUGGING, else use access rights of user
|
|
button.Enabled = System.Diagnostics.Debugger.IsAttached || Software.IsEnabled(softwareFunction);
|
|
}
|
|
}
|
|
}
|
|
|
|
groupBox.Show();
|
|
}
|
|
}
|
|
|
|
optionsMenuItem.Text = Software.UserName;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Hides all members but the login form if the app is initialized otherwise shows error message.
|
|
/// In case that the app is initialized and user is authorized shows all buttons as enabled or disabled depending on the user permissions.
|
|
/// </summary>
|
|
private void InitializeFormState()
|
|
{
|
|
HideContent();
|
|
SetSoftwareFunctions();
|
|
ShowAvailableSoftwareFunctions();
|
|
}
|
|
|
|
private void OnLogoutClick(Object sender, EventArgs e)
|
|
{
|
|
Software.Logout();
|
|
|
|
foreach (var control in Controls)
|
|
{
|
|
if (control is LoginForm loginForm)
|
|
{
|
|
Controls.Remove(loginForm);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
ShowAvailableSoftwareFunctions();
|
|
}
|
|
|
|
private void OnLoginClick(Object sender, EventArgs args)
|
|
{
|
|
HideContent();
|
|
|
|
var hasLoginForm = false;
|
|
|
|
foreach (var control in Controls)
|
|
{
|
|
if (control is LoginForm)
|
|
{
|
|
hasLoginForm = true;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!hasLoginForm)
|
|
{
|
|
Controls.Add(new LoginForm(LoginFormSubmitted));
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Callback method that is called when user enters valid username and password.
|
|
/// </summary>
|
|
/// <param name="username">Not null or empty string.</param>
|
|
/// <param name="password">Not null or empty string.</param>
|
|
/// <param name="sender">Is the LoginForm from witch is this method called.</param>
|
|
private void LoginFormSubmitted(String username, String password, Object sender)
|
|
{
|
|
if (sender is LoginForm loginForm)
|
|
{
|
|
if (Software.Login(username, password))
|
|
{
|
|
Controls.Remove(loginForm);
|
|
ShowAvailableSoftwareFunctions();
|
|
|
|
|
|
optionsMenuItem.Text = Software.UserName;
|
|
}
|
|
else
|
|
{
|
|
loginForm.ShowError("Invalid login attempt");
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion Form initialization
|
|
}
|
|
}
|