/// /// Copyright (c) 2017 Sensus Metering Systems /// using System; using System.Drawing; using System.Windows.Forms; using TBF.Resources; namespace TBF.BenchControl.Elde.CoverTest { public partial class CoverTestForm : Form, GenericDevices.IHasCompleted { /// Set to 'true' when the form closes public bool Completed { get { return completed; } } bool completed; Users.Grp.GID bypassLevel; public CoverTestForm(string message, Users.Grp.GID bypassLevel) { InitializeComponent(); ControlBox = false; this.bypassLevel = bypassLevel; Localize(); messageLabel.Text = message; float textWidth = Graphics.FromImage(new Bitmap(1, 1)).MeasureString(messageLabel.Text, messageLabel.Font).Width; int rqrdFormWidth = (int)textWidth + 80; /// Form width calculated from the text width if (rqrdFormWidth > Width) { int shift = (rqrdFormWidth - Width) / 2; Width = rqrdFormWidth; bypassButton.Left += shift; } completed = false; StartForceCloseHandler(); } void Localize() { Text = Strings.Message; bypassButton.Text = Strings.Bypass; } private void bypassButton_Click(object sender, EventArgs e) { if (!Users.GlobalData.CurrentUser.IsMemberOf(bypassLevel)) { if ((new Users.Forms.LoginDlg(bypassLevel)).ShowDialog() != DialogResult.OK) return; } if (Program.MainWnd != null) Program.MainWnd.UpdateUser(); completed = true; Close(); } #region Forced close handling public void StartForceCloseHandler() { UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args) { if (InvokeRequired) { Invoke(new EventHandler(OnForceClose), sender, args); } else OnForceClose(sender, args); }; } private void OnForceClose(object sender, EventArgs args) { DialogResult = DialogResult.Cancel; Close(); } #endregion } }