Beispiel #1
0
 public Starter(IBufermanHost bufermanHost, IBufermanApplication bufermanApp,
                IProgramSettingsGetter settings)
 {
     this._bufermanHost = bufermanHost;
     this._bufermanApp  = bufermanApp;
     this._settings     = settings;
 }
        public void Start(IBufermanApplication bufermanApplication, bool isAdmin)
        {
            this._isAdmin             = isAdmin;
            this._bufermanApplication = bufermanApplication;

            Application.ThreadException += BufermanWindow._Application_ThreadException;//Must be run before Application.Run() //Note

            Application.EnableVisualStyles();

            this._bufermanApplication.SetHost(this);

            this.TrayIcon = new NotifyIcon()
            {
                Text    = Resource.NotifyIconStartupText,
                Icon    = Icons.Buferman,
                Visible = true
            };
            this.TrayIcon.DoubleClick += this._TrayIcon_DoubleClick;

            this.NotificationEmitter = new NotificationEmitter(this.TrayIcon, bufermanApplication.GetBufermanTitle());
            this.NotificationEmitter.ShowInfoNotification(Resource.NotifyIconStartupText, 1500);

            this._InitializeForm();
            this.Text = isAdmin ?
                        bufermanApplication.GetBufermanAdminTitle() :
                        bufermanApplication.GetBufermanTitle();

            this.InnerAreaWidth = this.ClientRectangle.Width;

            this._pinnedBufersDivider = new Label
            {
                Text        = string.Empty,
                BorderStyle = BorderStyle.FixedSingle,
                AutoSize    = false,
                Height      = 3,
                BackColor   = Color.AliceBlue,
                Width       = this.InnerAreaWidth
            };
            this.Controls.Add(this._pinnedBufersDivider);
            this._pinnedBufersDivider.BringToFront();

            bufermanApplication.Run();

            Application.Idle += (object sender, EventArgs args) =>
            {
                if (bufermanApplication.NeedRerender)
                {
                    bufermanApplication.ClearEmptyBufers();

                    bufermanApplication.RerenderBufers();
                    bufermanApplication.NeedRerender = false;
                }
            };

            Application.Run(this);
        }
        public void Exit()
        {
            this.OnExiting?.Invoke(this, EventArgs.Empty);

            this.TrayIcon.Visible = false;
            WindowsFunctions.UnregisterHotKey(this.Handle, 0);
            this._bufermanApplication = null;

            Application.Exit();
        }