private void Restore()
        {
            OpenFileDialog dialog = new OpenFileDialog();
              dialog.Filter = Files.BackupFileFilter;
              dialog.CheckFileExists = true;
              dialog.Multiselect = false;
              dialog.Title = Resources.RestoreBackupDialogTitle;

              if (dialog.ShowDialog() == DialogResult.OK)
              {
            try
            {
              BackupFile backup = new BackupFile(this.controller.Status.DataPath, dialog.FileName);
              backup.BeginExtract();

              BackupProgressDialog backupDialog = new BackupProgressDialog();
              backupDialog.SetProgress(backup.FileName, backup.Progress);
              backupDialog.Show();

              while (!backup.Complete)
              {
            backupDialog.SetProgress(backup.FileName, backup.Progress);
            Application.DoEvents();
            Thread.Sleep(1);
              }

              backupDialog.Close();

              Status.TextStatusDialog.ShowInfo(this.controller, this);
              this.controller.LoadCertificates();
              Status.TextStatusDialog.HideInfo();
              LoadCertificates();

              MessageForm.Show(Resources.RestoreBackupDone, Resources.MessageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception exception)
            {
              Error.ErrorDialog.ShowError(exception);
            }
              }
        }
        private void Backup()
        {
            SaveFileDialog dialog = new SaveFileDialog();
              dialog.Filter = Files.BackupFileFilter;
              dialog.CheckPathExists = true;
              dialog.Title = Resources.SaveBackupDialogTitle;

              if (dialog.ShowDialog() == DialogResult.OK)
              {
            try
            {
              BackupFile backup = new BackupFile(this.controller.Status.DataPath, dialog.FileName);
              backup.BeginCreate();

              BackupProgressDialog backupDialog = new BackupProgressDialog();
              backupDialog.SetProgress(backup.FileName, backup.Progress);
              backupDialog.Show();

              while (!backup.Complete)
              {
            backupDialog.SetProgress(backup.FileName, backup.Progress);
            Application.DoEvents();
            Thread.Sleep(1);
              }

              backupDialog.Close();

              MessageForm.Show(Resources.SaveBackupDone, Resources.MessageBoxTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception exception)
            {
              Error.ErrorDialog.ShowError(exception);
            }
              }
        }