using System; using System.Collections.Generic; using System.Windows.Forms; using log4net; using NHibernate; using Common; using SharedDatabase; using SharedDatabase.Entities; using WorkflowConfigurator.Resources; namespace WorkflowConfigurator { public partial class MainWnd : Form { static readonly ILog log = LogManager.GetLogger(typeof(MainWnd)); public MainWnd() { InitializeComponent(); /// /// Loads processes from the database. /// In case of problems (missing database) makes it possible to create a new one. /// DialogResult settingsDR = DialogResult.OK; do { if (settingsDR == DialogResult.OK) { try { TracingDB.Session = TracingDB.CreateSession(Program.LocalSettings.ConnectionString); IList wPlaceRegistations = TracingDB.Session.QueryOver().List(); /// Try DB connection } catch (Exception exc) { log.FatalFormat("{0}:{1}{2}", Strings.Opening_database_failed, Environment.NewLine, exc.Message); DialogResult rslt = MessageBox.Show(string.Format("{0}:{1}{2}{3}{1}{4}", Strings.Opening_database_failed, Environment.NewLine, exc.Message, exc.InnerException != null ? Environment.NewLine + exc.InnerException.Message : string.Empty, Strings.Do_you_want_to_change_settingsQM), Strings.Error, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation); if (rslt != DialogResult.Yes) { /// Settings ware not changed -> exit throw new QuitAppException(Strings.Opening_database_failed); } settingsDR = new Forms.SettingsDlg().ShowDialog(); } } } while (settingsDR != DialogResult.Cancel && (TracingDB.Session == null)); if (settingsDR == DialogResult.Cancel) { /// Settings were not changed -> exit throw new QuitAppException(Strings.Opening_database_failed); } if (!string.IsNullOrEmpty(Program.LocalSettings.UsersDBConnString)) { CurrentUser.LocalUsersDB = new DBSettings(Common.DBType.MySql, Program.LocalSettings.UsersDBConnString); } } private void MainWnd_Load(object sender, EventArgs e) { PrintTitle(false); Controls.Add(new UserControls.OverviewOfProcessesCtrl(this)); Settings2UI(); } private void MainWnd_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = false; UI2Settings(); Program.LocalSettings.Save(); } #region Helper functions public static void PrintTitle(bool busy) { string user = CurrentUser.UserName(); if (!string.IsNullOrEmpty(user)) user = string.Format(" ({0})", user); Program.MainWnd.Text = string.Format(busy ? "{0} v.{1}{2} ... reading database" : "{0} v.{1}{2}", Strings.Workflow_configurator, Program.Version, user); } /// /// Set UI properties (determining the window position, etc) to values obtained from local settings /// void Settings2UI() { LocalSettings ls = Program.LocalSettings; /// WindowState = (ls.MWndMaximized ? FormWindowState.Maximized : FormWindowState.Normal); Width = ls.MWndWidth; Height = ls.MWndHeight; Left = ls.MWndLeft; Top = ls.MWndTop; } /// /// Retrieve UI properties and save them to local settings /// void UI2Settings() { LocalSettings ls = Program.LocalSettings; /// ls.MWndMaximized = (WindowState == FormWindowState.Maximized); if (WindowState == FormWindowState.Normal) { ls.MWndLeft = Location.X; ls.MWndTop = Location.Y; ls.MWndWidth = Size.Width; ls.MWndHeight = Size.Height; } else { /// Maximized or minimized (when restarted, minimized window is restored as normal) ls.MWndLeft = RestoreBounds.Left; ls.MWndTop = RestoreBounds.Top; ls.MWndWidth = RestoreBounds.Width; ls.MWndHeight = RestoreBounds.Height; } } #endregion } }