Merge pull request #589 from agimofcarmen/CP-13518_II

Cp 13518 ii
This commit is contained in:
Mihaela Stoica 2015-07-31 14:51:04 +01:00
commit 8264dcaba0
11 changed files with 866 additions and 149 deletions

View File

@ -78,10 +78,12 @@ namespace XenAdmin.Actions
int max = Alerts.Count();
Exception e = null;
LogDescriptionChanges = false;
List<Alert> toBeDismissed = new List<Alert>();
try
{
foreach (Alert a in Alerts)
var myList = new List<Alert>(Alerts);
foreach (Alert a in myList)
{
PercentComplete = (i * 100) / max;
i++;
@ -92,7 +94,18 @@ namespace XenAdmin.Actions
{
try
{
a1.DismissSingle(Session);
if (a1 is XenServerPatchAlert || a1 is XenServerVersionAlert)
{
toBeDismissed.Add(a1);
}
else if(a1 is XenCenterUpdateAlert)
{
a1.Dismiss();
}
else
{
a1.DismissSingle(Session);
}
}
catch (Failure exn)
{
@ -104,6 +117,8 @@ namespace XenAdmin.Actions
}
});
}
Updates.DismissUpdates(toBeDismissed);
}
finally
{

View File

@ -102,10 +102,10 @@ namespace XenAdmin.Alerts
}
public override void Dismiss()
{
{
Properties.Settings.Default.LatestXenCenterSeen = NewVersion.VersionAndLang;
Settings.TrySaveSettings();
base.Dismiss();
Updates.RemoveUpdate(this);
}
public override bool IsDismissed()

View File

@ -177,13 +177,6 @@ namespace XenAdmin.Alerts
return false;
}
public override void Dismiss()
{
base.Dismiss();
foreach (IXenConnection connection in connections)
new IgnorePatchAction(connection, Patch).RunAsync();
}
public override bool Equals(Alert other)
{
if (other is XenServerPatchAlert)

View File

@ -122,13 +122,6 @@ namespace XenAdmin.Alerts
return false;
}
public override void Dismiss()
{
foreach (IXenConnection connection in connections)
new IgnoreServerAction(connection, Version).RunAsync();
base.Dismiss();
}
public override bool Equals(Alert other)
{
if (other is XenServerVersionAlert)

View File

@ -71,7 +71,9 @@ namespace XenAdmin.Core
try
{
lock (updateAlertsLock)
{
updateAlerts.Add(update);
}
}
catch (Exception e)
{
@ -92,6 +94,63 @@ namespace XenAdmin.Core
}
}
/// <summary>
/// Dismisses the updates in the given list i.e. they are added in the
/// other_config list of each pool and removed from the Updates.UpdateAlerts list.
/// </summary>
/// <param name="toBeDismissed"></param>
public static void DismissUpdates(List<Alert> toBeDismissed)
{
foreach(IXenConnection connection in ConnectionsManager.XenConnectionsCopy)
{
XenAPI.Pool pool = Helpers.GetPoolOfOne(connection);
if (pool == null)
continue;
Dictionary<string, string> other_config = pool.other_config;
foreach (Alert alert in toBeDismissed)
{
if (alert is XenServerPatchAlert)
{
if (other_config.ContainsKey(IgnorePatchAction.IgnorePatchKey))
{
List<string> current = new List<string>(other_config[IgnorePatchAction.IgnorePatchKey].Split(','));
if (current.Contains(((XenServerPatchAlert)alert).Patch.Uuid))
continue;
current.Add(((XenServerPatchAlert)alert).Patch.Uuid);
other_config[IgnorePatchAction.IgnorePatchKey] = string.Join(",", current.ToArray());
}
else
{
other_config.Add(IgnorePatchAction.IgnorePatchKey, ((XenServerPatchAlert)alert).Patch.Uuid);
}
}
if (alert is XenServerVersionAlert)
{
if (other_config.ContainsKey(IgnoreServerAction.LAST_SEEN_SERVER_VERSION_KEY))
{
List<string> current = new List<string>(other_config[IgnoreServerAction.LAST_SEEN_SERVER_VERSION_KEY].Split(','));
if (current.Contains(((XenServerVersionAlert)alert).Version.VersionAndOEM))
continue;
current.Add(((XenServerVersionAlert)alert).Version.VersionAndOEM);
other_config[IgnoreServerAction.LAST_SEEN_SERVER_VERSION_KEY] = string.Join(",", current.ToArray());
}
else
{
other_config.Add(IgnoreServerAction.LAST_SEEN_SERVER_VERSION_KEY, ((XenServerVersionAlert)alert).Version.VersionAndOEM);
}
}
Updates.RemoveUpdate(alert);
}
XenAPI.Pool.set_other_config(connection.Session, pool.opaque_ref, other_config);
}
}
private static Alert FindUpdate(Alert alert)
{
lock (updateAlertsLock)
@ -411,6 +470,8 @@ namespace XenAdmin.Core
{
other_config.Remove(IgnoreServerAction.LAST_SEEN_SERVER_VERSION_KEY);
}
XenAPI.Pool.set_other_config(_connection.Session, pool.opaque_ref, other_config);
}
Properties.Settings.Default.LatestXenCenterSeen = "";

View File

@ -42,6 +42,16 @@
this.informationLabelIcon = new System.Windows.Forms.PictureBox();
this.informationLabel = new System.Windows.Forms.LinkLabel();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.AutoCheckForUpdatesDisabledLabel = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.checkForUpdatesNowButton2 = new System.Windows.Forms.LinkLabel();
this.button2 = new System.Windows.Forms.Button();
this.button1 = new System.Windows.Forms.Button();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.checkForUpdatesNowButton = new System.Windows.Forms.Button();
this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel();
this.labelProgress = new System.Windows.Forms.Label();
this.pictureBoxProgress = new System.Windows.Forms.PictureBox();
this.toolStrip1 = new XenAdmin.Controls.ToolStripEx();
this.toolStripDropDownButtonServerFilter = new XenAdmin.Controls.FilterLocationToolStripDropDownButton();
this.toolStripDropDownButtonDateFilter = new XenAdmin.Controls.FilterDatesToolStripDropDownButton();
@ -50,22 +60,24 @@
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripButtonExportAll = new System.Windows.Forms.ToolStripButton();
this.toolStripLabelFiltersOnOff = new System.Windows.Forms.ToolStripLabel();
this.panelProgress = new XenAdmin.Controls.FlickerFreePanel();
this.labelProgress = new System.Windows.Forms.Label();
this.pictureBoxProgress = new System.Windows.Forms.PictureBox();
this.toolStripSplitButtonDismiss = new System.Windows.Forms.ToolStripSplitButton();
this.dismissAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.dismissSelectedToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripButtonRestoreDismissed = new System.Windows.Forms.ToolStripButton();
this.dataGridViewUpdates = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx();
this.ColumnExpand = new System.Windows.Forms.DataGridViewImageColumn();
this.ColumnMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnLocation = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnDate = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnWebPage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.toolStripButtonRestoreDismissed = new System.Windows.Forms.ToolStripButton();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.informationLabelIcon)).BeginInit();
this.tableLayoutPanel2.SuspendLayout();
this.toolStrip1.SuspendLayout();
this.panelProgress.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.tableLayoutPanel3.SuspendLayout();
this.tableLayoutPanel4.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxProgress)).BeginInit();
this.toolStrip1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridViewUpdates)).BeginInit();
this.SuspendLayout();
//
@ -93,15 +105,84 @@
// tableLayoutPanel2
//
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.BackColor = System.Drawing.Color.Gainsboro;
this.tableLayoutPanel2.BackColor = System.Drawing.Color.White;
this.tableLayoutPanel2.Controls.Add(this.toolStrip1, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.AutoCheckForUpdatesDisabledLabel, 1, 1);
this.tableLayoutPanel2.Controls.Add(this.pictureBox1, 0, 1);
this.tableLayoutPanel2.Controls.Add(this.checkForUpdatesNowButton2, 2, 1);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// AutoCheckForUpdatesDisabledLabel
//
resources.ApplyResources(this.AutoCheckForUpdatesDisabledLabel, "AutoCheckForUpdatesDisabledLabel");
this.AutoCheckForUpdatesDisabledLabel.Name = "AutoCheckForUpdatesDisabledLabel";
//
// pictureBox1
//
resources.ApplyResources(this.pictureBox1, "pictureBox1");
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.TabStop = false;
//
// checkForUpdatesNowButton2
//
resources.ApplyResources(this.checkForUpdatesNowButton2, "checkForUpdatesNowButton2");
this.checkForUpdatesNowButton2.LinkColor = System.Drawing.Color.Black;
this.checkForUpdatesNowButton2.Name = "checkForUpdatesNowButton2";
this.checkForUpdatesNowButton2.TabStop = true;
this.checkForUpdatesNowButton2.Click += new System.EventHandler(this.checkForUpdatesNowButton2_Click);
//
// button2
//
resources.ApplyResources(this.button2, "button2");
this.button2.Name = "button2";
this.button2.UseVisualStyleBackColor = true;
//
// button1
//
resources.ApplyResources(this.button1, "button1");
this.button1.Name = "button1";
this.button1.UseVisualStyleBackColor = true;
//
// tableLayoutPanel3
//
resources.ApplyResources(this.tableLayoutPanel3, "tableLayoutPanel3");
this.tableLayoutPanel3.BackColor = System.Drawing.Color.Transparent;
this.tableLayoutPanel3.Controls.Add(this.checkForUpdatesNowButton, 0, 1);
this.tableLayoutPanel3.Controls.Add(this.tableLayoutPanel4, 0, 0);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
//
// checkForUpdatesNowButton
//
resources.ApplyResources(this.checkForUpdatesNowButton, "checkForUpdatesNowButton");
this.checkForUpdatesNowButton.Name = "checkForUpdatesNowButton";
this.checkForUpdatesNowButton.UseVisualStyleBackColor = true;
this.checkForUpdatesNowButton.Click += new System.EventHandler(this.checkForUpdatesNowButton_Click);
//
// tableLayoutPanel4
//
resources.ApplyResources(this.tableLayoutPanel4, "tableLayoutPanel4");
this.tableLayoutPanel4.Controls.Add(this.labelProgress, 1, 0);
this.tableLayoutPanel4.Controls.Add(this.pictureBoxProgress, 0, 0);
this.tableLayoutPanel4.Cursor = System.Windows.Forms.Cursors.Arrow;
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
//
// labelProgress
//
resources.ApplyResources(this.labelProgress, "labelProgress");
this.labelProgress.Name = "labelProgress";
//
// pictureBoxProgress
//
resources.ApplyResources(this.pictureBoxProgress, "pictureBoxProgress");
this.pictureBoxProgress.Name = "pictureBoxProgress";
this.pictureBoxProgress.TabStop = false;
//
// toolStrip1
//
resources.ApplyResources(this.toolStrip1, "toolStrip1");
this.toolStrip1.BackColor = System.Drawing.Color.WhiteSmoke;
this.toolStrip1.ClickThrough = true;
this.tableLayoutPanel2.SetColumnSpan(this.toolStrip1, 3);
this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripDropDownButtonServerFilter,
@ -111,6 +192,7 @@
this.toolStripSeparator1,
this.toolStripButtonExportAll,
this.toolStripLabelFiltersOnOff,
this.toolStripSplitButtonDismiss,
this.toolStripButtonRestoreDismissed});
this.toolStrip1.Name = "toolStrip1";
//
@ -160,26 +242,36 @@
resources.ApplyResources(this.toolStripLabelFiltersOnOff, "toolStripLabelFiltersOnOff");
this.toolStripLabelFiltersOnOff.Name = "toolStripLabelFiltersOnOff";
//
// panelProgress
// toolStripSplitButtonDismiss
//
resources.ApplyResources(this.panelProgress, "panelProgress");
this.panelProgress.BackColor = System.Drawing.SystemColors.Window;
this.panelProgress.BorderColor = System.Drawing.Color.Black;
this.panelProgress.BorderWidth = 1;
this.panelProgress.Controls.Add(this.labelProgress);
this.panelProgress.Controls.Add(this.pictureBoxProgress);
this.panelProgress.Name = "panelProgress";
this.toolStripSplitButtonDismiss.AutoToolTip = false;
this.toolStripSplitButtonDismiss.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.toolStripSplitButtonDismiss.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.dismissAllToolStripMenuItem,
this.dismissSelectedToolStripMenuItem});
resources.ApplyResources(this.toolStripSplitButtonDismiss, "toolStripSplitButtonDismiss");
this.toolStripSplitButtonDismiss.Name = "toolStripSplitButtonDismiss";
this.toolStripSplitButtonDismiss.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripSplitButtonDismiss_DropDownItemClicked);
//
// labelProgress
// dismissAllToolStripMenuItem
//
resources.ApplyResources(this.labelProgress, "labelProgress");
this.labelProgress.Name = "labelProgress";
this.dismissAllToolStripMenuItem.Name = "dismissAllToolStripMenuItem";
resources.ApplyResources(this.dismissAllToolStripMenuItem, "dismissAllToolStripMenuItem");
this.dismissAllToolStripMenuItem.Click += new System.EventHandler(this.dismissAllToolStripMenuItem_Click);
//
// pictureBoxProgress
// dismissSelectedToolStripMenuItem
//
resources.ApplyResources(this.pictureBoxProgress, "pictureBoxProgress");
this.pictureBoxProgress.Name = "pictureBoxProgress";
this.pictureBoxProgress.TabStop = false;
this.dismissSelectedToolStripMenuItem.Name = "dismissSelectedToolStripMenuItem";
resources.ApplyResources(this.dismissSelectedToolStripMenuItem, "dismissSelectedToolStripMenuItem");
this.dismissSelectedToolStripMenuItem.Click += new System.EventHandler(this.dismissSelectedToolStripMenuItem_Click);
//
// toolStripButtonRestoreDismissed
//
this.toolStripButtonRestoreDismissed.AutoToolTip = false;
this.toolStripButtonRestoreDismissed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
resources.ApplyResources(this.toolStripButtonRestoreDismissed, "toolStripButtonRestoreDismissed");
this.toolStripButtonRestoreDismissed.Name = "toolStripButtonRestoreDismissed";
this.toolStripButtonRestoreDismissed.Click += new System.EventHandler(this.toolStripButtonRestoreDismissed_Click);
//
// dataGridViewUpdates
//
@ -254,21 +346,13 @@
this.ColumnWebPage.Resizable = System.Windows.Forms.DataGridViewTriState.False;
this.ColumnWebPage.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
//
// toolStripButtonRestoreDismissed
//
this.toolStripButtonRestoreDismissed.AutoToolTip = false;
this.toolStripButtonRestoreDismissed.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
resources.ApplyResources(this.toolStripButtonRestoreDismissed, "toolStripButtonRestoreDismissed");
this.toolStripButtonRestoreDismissed.Name = "toolStripButtonRestoreDismissed";
this.toolStripButtonRestoreDismissed.Click += new System.EventHandler(this.toolStripButtonRestoreDismissed_Click);
//
// ManageUpdatesPage
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.SystemColors.Control;
this.Controls.Add(this.tableLayoutPanel3);
this.Controls.Add(this.tableLayoutPanel2);
this.Controls.Add(this.panelProgress);
this.Controls.Add(this.tableLayoutPanel1);
this.Controls.Add(this.dataGridViewUpdates);
this.Name = "ManageUpdatesPage";
@ -276,11 +360,15 @@
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.informationLabelIcon)).EndInit();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.tableLayoutPanel3.ResumeLayout(false);
this.tableLayoutPanel3.PerformLayout();
this.tableLayoutPanel4.ResumeLayout(false);
this.tableLayoutPanel4.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxProgress)).EndInit();
this.toolStrip1.ResumeLayout(false);
this.toolStrip1.PerformLayout();
this.panelProgress.ResumeLayout(false);
this.panelProgress.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxProgress)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dataGridViewUpdates)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
@ -290,26 +378,36 @@
#endregion
private XenAdmin.Controls.DataGridViewEx.DataGridViewEx dataGridViewUpdates;
private XenAdmin.Controls.FlickerFreePanel panelProgress;
private System.Windows.Forms.PictureBox pictureBoxProgress;
private System.Windows.Forms.Label labelProgress;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.PictureBox informationLabelIcon;
private System.Windows.Forms.LinkLabel informationLabel;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private XenAdmin.Controls.ToolStripEx toolStrip1;
private XenAdmin.Controls.FilterLocationToolStripDropDownButton toolStripDropDownButtonServerFilter;
private XenAdmin.Controls.FilterDatesToolStripDropDownButton toolStripDropDownButtonDateFilter;
private System.Windows.Forms.Button button2;
private Controls.ToolStripEx toolStrip1;
private Controls.FilterLocationToolStripDropDownButton toolStripDropDownButtonServerFilter;
private Controls.FilterDatesToolStripDropDownButton toolStripDropDownButtonDateFilter;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private System.Windows.Forms.ToolStripButton toolStripButtonRefresh;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripButton toolStripButtonExportAll;
private System.Windows.Forms.ToolStripLabel toolStripLabelFiltersOnOff;
private System.Windows.Forms.ToolStripSplitButton toolStripSplitButtonDismiss;
private System.Windows.Forms.ToolStripMenuItem dismissAllToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem dismissSelectedToolStripMenuItem;
private System.Windows.Forms.ToolStripButton toolStripButtonRestoreDismissed;
private System.Windows.Forms.Label AutoCheckForUpdatesDisabledLabel;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.DataGridViewImageColumn ColumnExpand;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnMessage;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnLocation;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnDate;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnWebPage;
private System.Windows.Forms.ToolStripButton toolStripButtonRestoreDismissed;
private System.Windows.Forms.LinkLabel checkForUpdatesNowButton2;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.Button checkForUpdatesNowButton;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
}
}

View File

@ -63,6 +63,7 @@ namespace XenAdmin.TabPages
Dictionary<string, bool> expandedState = new Dictionary<string, bool>();
private List<string> selectedUpdates = new List<string>();
private int checksQueue;
private bool PageWasRefreshed;
public ManageUpdatesPage()
{
@ -75,6 +76,8 @@ namespace XenAdmin.TabPages
Updates.RegisterCollectionChanged(UpdatesCollectionChanged);
Updates.CheckForUpdatesStarted += CheckForUpdates_CheckForUpdatesStarted;
Updates.CheckForUpdatesCompleted += CheckForUpdates_CheckForUpdatesCompleted;
pictureBox1.Image = SystemIcons.Information.ToBitmap();
PageWasRefreshed = false;
}
public void RefreshUpdateList()
@ -98,10 +101,14 @@ namespace XenAdmin.TabPages
return;
toolStripButtonRefresh.Enabled = false;
toolStripButtonRestoreDismissed.Enabled = false;
StoreSelectedUpdates();
dataGridViewUpdates.Rows.Clear();
dataGridViewUpdates.Refresh();
spinningTimer.Start();
panelProgress.Visible = true;
tableLayoutPanel3.Visible = true;
labelProgress.Text = Messages.AVAILABLE_UPDATES_SEARCHING;
});
}
@ -112,6 +119,7 @@ namespace XenAdmin.TabPages
{
checksQueue--;
toolStripButtonRefresh.Enabled = true;
toolStripButtonRestoreDismissed.Enabled = true;
spinningTimer.Stop();
if (succeeded)
@ -119,7 +127,9 @@ namespace XenAdmin.TabPages
int alertCount = Updates.UpdateAlertsCount;
if (alertCount > 0)
panelProgress.Visible = false;
{
tableLayoutPanel3.Visible = false;
}
else
{
pictureBoxProgress.Image = SystemIcons.Information.ToBitmap();
@ -191,6 +201,8 @@ namespace XenAdmin.TabPages
return;
SetFilterLabel();
this.dataGridViewUpdates.Location = new Point(this.dataGridViewUpdates.Location.X, 51);
try
{
@ -200,20 +212,43 @@ namespace XenAdmin.TabPages
{
StoreSelectedUpdates();
dataGridViewUpdates.Rows.Clear();
dataGridViewUpdates.Refresh();
}
var updates = new List<Alert>(Updates.UpdateAlerts);
if (updates.Count == 0)
{
panelProgress.Visible = true;
tableLayoutPanel3.Visible = true;
pictureBoxProgress.Image = SystemIcons.Information.ToBitmap();
labelProgress.Text = Messages.AVAILABLE_UPDATES_NOT_FOUND;
if (SomeOrAllUpdatesDisabled())
{
labelProgress.Text = Messages.DISABLED_UPDATE_AUTOMATIC_CHECK_WARNING;
checkForUpdatesNowButton.Visible = true;
MakeWarningInvisible();
}
else
{
labelProgress.Text = Messages.AVAILABLE_UPDATES_NOT_FOUND;
}
return;
}
checkForUpdatesNowButton.Visible = false;
if (SomeButNotAllUpdatesDisabled())
{
this.dataGridViewUpdates.Location = new Point(this.dataGridViewUpdates.Location.X, 72);
MakeWarningVisible();
}
else
{
MakeWarningInvisible();
}
updates.RemoveAll(FilterAlert);
panelProgress.Visible = false;
tableLayoutPanel3.Visible = false;
if (dataGridViewUpdates.SortedColumn != null)
{
@ -248,6 +283,55 @@ namespace XenAdmin.TabPages
}
}
/// <summary>
/// Makes the warning that appears above the grid saying: "Automatic checking for updates
/// is disabled for some types of updates" visible.
/// </summary>
private void MakeWarningVisible()
{
pictureBox1.Visible = true;
AutoCheckForUpdatesDisabledLabel.Visible = true;
checkForUpdatesNowButton2.Visible = true;
}
/// <summary>
/// Makes the warning that appears above the grid saying: "Automatic checking for updates
/// is disabled for some types of updates" invisible.
/// </summary>
private void MakeWarningInvisible()
{
pictureBox1.Visible = false;
AutoCheckForUpdatesDisabledLabel.Visible = false;
checkForUpdatesNowButton2.Visible = false;
}
/// <summary>
/// Checks if the automatic checking for updates in the Updates Options Page is disabled for some, but not all types of updates.
/// </summary>
/// <returns></returns>
private bool SomeButNotAllUpdatesDisabled()
{
return (!Properties.Settings.Default.AllowPatchesUpdates ||
!Properties.Settings.Default.AllowXenCenterUpdates ||
!Properties.Settings.Default.AllowXenServerUpdates) &&
(Properties.Settings.Default.AllowPatchesUpdates ||
Properties.Settings.Default.AllowXenCenterUpdates ||
Properties.Settings.Default.AllowXenServerUpdates) &&
!PageWasRefreshed;
}
/// <summary>
/// Checks if the automatic checking for updates in the Updates Options Page is disabled for some or all types of updates.
/// </summary>
/// <returns></returns>
private bool SomeOrAllUpdatesDisabled()
{
return !((Properties.Settings.Default.AllowPatchesUpdates &&
Properties.Settings.Default.AllowXenCenterUpdates &&
Properties.Settings.Default.AllowXenServerUpdates) ||
PageWasRefreshed);
}
/// <summary>
/// Runs all the current filters on the alert to determine if it should be shown in the list or not.
/// </summary>
@ -368,8 +452,8 @@ namespace XenAdmin.TabPages
var groups = from Alert alert in alerts
where alert != null && !alert.Dismissing
group alert by alert.Connection
into g
select new { Connection = g.Key, Alerts = g };
into g
select new { Connection = g.Key, Alerts = g };
foreach (var g in groups)
{
@ -379,23 +463,25 @@ namespace XenAdmin.TabPages
{
alert.Dismissing = true;
}
toolStripButtonRestoreDismissed.Enabled = false;
DeleteAllAlertsAction action = new DeleteAllAlertsAction(g.Connection, g.Alerts);
action.RunAsync();
action.Completed += DeleteAllAllertAction_Completed;
action.Completed += DeleteAllAllertAction_Completed;
}
}
}
/// <summary>
/// After the Delete action is completed the page is refreshed and the restore dismissed
/// button is enabled again.
/// </summary>
/// <param name="sender"></param>
private void DeleteAllAllertAction_Completed(ActionBase sender)
{
foreach (var alert in Updates.UpdateAlerts)
{
if (alert.IsDismissed())
Updates.RemoveUpdate(alert);
}
Program.Invoke(Program.MainWindow, () =>
{
{
Rebuild();
toolStripButtonRestoreDismissed.Enabled = true;
});
}
@ -404,33 +490,108 @@ namespace XenAdmin.TabPages
#region Actions DropDown event handlers
private void ToolStripMenuItemDismiss_Click(object sender, EventArgs e)
{
if (dataGridViewUpdates.SelectedRows.Count != 1)
log.DebugFormat("Only 1 update can be dismissed at a time (Attempted to dismiss {0}). Dismissing the clicked item.", dataGridViewUpdates.SelectedRows.Count);
DataGridViewRow clickedRow = FindAlertRow(sender as ToolStripMenuItem);
if (clickedRow == null)
{
log.Debug("Attempted to dismiss update with no update selected.");
return;
}
Alert alert = (Alert)clickedRow.Tag;
if (alert == null)
return;
private void toolStripSplitButtonDismiss_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
toolStripSplitButtonDismiss.DefaultItem = e.ClickedItem;
toolStripSplitButtonDismiss.Text = toolStripSplitButtonDismiss.DefaultItem.Text;
}
using (var dlog = new ThreeButtonDialog(
new ThreeButtonDialog.Details(null, Messages.UPDATE_DISMISS_CONFIRM, Messages.XENCENTER),
ThreeButtonDialog.ButtonYes,
ThreeButtonDialog.ButtonNo))
{
if (dlog.ShowDialog(this) != DialogResult.Yes)
return;
}
/// <summary>
/// If the answer of the user to the dialog is YES, then make a list with all the updates and call
/// DismissUpdates on that list.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dismissAllToolStripMenuItem_Click(object sender, EventArgs e)
{
DismissUpdates(new List<Alert> { (Alert)clickedRow.Tag });
}
DialogResult result;
if (!FilterIsOn)
{
using (var dlog = new ThreeButtonDialog(
new ThreeButtonDialog.Details(null, Messages.UPDATE_DISMISS_ALL_NO_FILTER_CONTINUE),
new ThreeButtonDialog.TBDButton(Messages.DISMISS_ALL_YES_CONFIRM_BUTTON, DialogResult.Yes),
ThreeButtonDialog.ButtonCancel))
{
result = dlog.ShowDialog(this);
}
}
else
{
using (var dlog = new ThreeButtonDialog(
new ThreeButtonDialog.Details(null, Messages.UPDATE_DISMISS_ALL_CONTINUE),
new ThreeButtonDialog.TBDButton(Messages.DISMISS_ALL_CONFIRM_BUTTON, DialogResult.Yes),
new ThreeButtonDialog.TBDButton(Messages.DISMISS_FILTERED_CONFIRM_BUTTON, DialogResult.No, ThreeButtonDialog.ButtonType.NONE),
ThreeButtonDialog.ButtonCancel))
{
result = dlog.ShowDialog(this);
}
}
if (result == DialogResult.Cancel)
return;
var alerts = result == DialogResult.No
? from DataGridViewRow row in dataGridViewUpdates.Rows select row.Tag as Alert
: Updates.UpdateAlerts;
DismissUpdates(alerts);
}
/// <summary>
/// If the answer of the user to the dialog is YES, then make a list of all the selected rows
/// and call DismissUpdates on that list.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dismissSelectedToolStripMenuItem_Click(object sender, EventArgs e)
{
using (var dlog = new ThreeButtonDialog(
new ThreeButtonDialog.Details(null, Messages.UPDATE_DISMISS_SELECTED_CONFIRM, Messages.XENCENTER),
ThreeButtonDialog.ButtonYes,
ThreeButtonDialog.ButtonNo))
{
if (dlog.ShowDialog(this) != DialogResult.Yes)
return;
}
if (dataGridViewUpdates.SelectedRows.Count > 0)
{
var selectedAlerts = from DataGridViewRow row in dataGridViewUpdates.SelectedRows select row.Tag as Alert;
DismissUpdates(selectedAlerts);
}
}
private void ToolStripMenuItemDismiss_Click(object sender, EventArgs e)
{
if (dataGridViewUpdates.SelectedRows.Count != 1)
log.DebugFormat("Only 1 update can be dismissed at a time (Attempted to dismiss {0}). Dismissing the clicked item.", dataGridViewUpdates.SelectedRows.Count);
DataGridViewRow clickedRow = FindAlertRow(sender as ToolStripMenuItem);
if (clickedRow == null)
{
log.Debug("Attempted to dismiss update with no update selected.");
return;
}
Alert alert = (Alert)clickedRow.Tag;
if (alert == null)
return;
using (var dlog = new ThreeButtonDialog(
new ThreeButtonDialog.Details(null, Messages.UPDATE_DISMISS_CONFIRM, Messages.XENCENTER),
ThreeButtonDialog.ButtonYes,
ThreeButtonDialog.ButtonNo))
{
if (dlog.ShowDialog(this) != DialogResult.Yes)
return;
}
DismissUpdates(new List<Alert> { (Alert)clickedRow.Tag });
}
private DataGridViewRow FindAlertRow(ToolStripMenuItem toolStripMenuItem)
{
@ -658,6 +819,8 @@ namespace XenAdmin.TabPages
private void toolStripButtonRefresh_Click(object sender, EventArgs e)
{
PageWasRefreshed = true;
checkForUpdatesNowButton.Visible = false;
Updates.CheckForUpdates(true);
}
@ -748,11 +911,25 @@ namespace XenAdmin.TabPages
Messages.XENCENTER)).ShowDialog(this);
}
}
private void checkForUpdatesNowButton_Click(object sender, EventArgs e)
{
checkForUpdatesNowButton.Visible = false;
Updates.CheckForUpdates(true);
PageWasRefreshed = true;
}
private void toolStripButtonRestoreDismissed_Click(object sender, EventArgs e)
{
PageWasRefreshed = true;
checkForUpdatesNowButton.Visible = false;
Updates.RestoreDismissedUpdates();
}
private void checkForUpdatesNowButton2_Click(object sender, EventArgs e)
{
MakeWarningInvisible();
PageWasRefreshed = true;
Updates.CheckForUpdates(true);
}
}
}

View File

@ -125,6 +125,9 @@
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="informationLabelIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="informationLabelIcon.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
@ -133,10 +136,10 @@
<value>NoControl</value>
</data>
<data name="informationLabelIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
<value>3, 10</value>
</data>
<data name="informationLabelIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>20, 16</value>
<value>19, 23</value>
</data>
<data name="informationLabelIcon.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -166,13 +169,13 @@
<value>NoControl</value>
</data>
<data name="informationLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>29, 4</value>
<value>28, 10</value>
</data>
<data name="informationLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>98, 15</value>
</data>
<data name="informationLabel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<value>4</value>
</data>
<data name="informationLabel.Text" xml:space="preserve">
<value>informationLabel</value>
@ -193,13 +196,13 @@
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 382</value>
<value>13, 430</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>499, 23</value>
<value>772, 36</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
@ -217,7 +220,7 @@
<value>2</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="informationLabelIcon" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="informationLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="informationLabelIcon" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="informationLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="Percent,100,Absolute,36" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -226,10 +229,10 @@
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
<value>3</value>
</data>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>1, 1</value>
<value>128, 46</value>
</metadata>
<data name="toolStrip1.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
@ -303,6 +306,42 @@
<data name="toolStripLabelFiltersOnOff.Text" xml:space="preserve">
<value>Filters are ON/OFF</value>
</data>
<data name="dismissAllToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 22</value>
</data>
<data name="dismissAllToolStripMenuItem.Text" xml:space="preserve">
<value>Dism&amp;iss All</value>
</data>
<data name="dismissSelectedToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>161, 22</value>
</data>
<data name="dismissSelectedToolStripMenuItem.Text" xml:space="preserve">
<value>Dismiss Sele&amp;cted</value>
</data>
<data name="toolStripSplitButtonDismiss.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
</value>
</data>
<data name="toolStripSplitButtonDismiss.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
<value>Magenta</value>
</data>
<data name="toolStripSplitButtonDismiss.Size" type="System.Drawing.Size, System.Drawing">
<value>63, 23</value>
</data>
<data name="toolStripSplitButtonDismiss.Text" xml:space="preserve">
<value>&amp;Dismiss</value>
</data>
<data name="toolStripButtonRestoreDismissed.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
@ -325,7 +364,7 @@
<value>152, 23</value>
</data>
<data name="toolStripButtonRestoreDismissed.Text" xml:space="preserve">
<value>Restore &amp;Dismissed Updates</value>
<value>Restore Dismissed &amp;Updates</value>
</data>
<data name="toolStrip1.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 1</value>
@ -354,6 +393,126 @@
<data name="&gt;&gt;toolStrip1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt, style=Bold</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 32</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>395, 15</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.Text" xml:space="preserve">
<value>Automatic checking for updates is disabled for some types of updates.</value>
</data>
<data name="AutoCheckForUpdatesDisabledLabel.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;AutoCheckForUpdatesDisabledLabel.Name" xml:space="preserve">
<value>AutoCheckForUpdatesDisabledLabel</value>
</data>
<data name="&gt;&gt;AutoCheckForUpdatesDisabledLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;AutoCheckForUpdatesDisabledLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;AutoCheckForUpdatesDisabledLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="pictureBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="pictureBox1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pictureBox1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 30</value>
</data>
<data name="pictureBox1.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>19, 19</value>
</data>
<data name="pictureBox1.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>19, 19</value>
</data>
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>19, 19</value>
</data>
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>StretchImage</value>
</data>
<data name="pictureBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="pictureBox1.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;pictureBox1.Name" xml:space="preserve">
<value>pictureBox1</value>
</data>
<data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pictureBox1.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="checkForUpdatesNowButton2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="checkForUpdatesNowButton2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="checkForUpdatesNowButton2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="checkForUpdatesNowButton2.Location" type="System.Drawing.Point, System.Drawing">
<value>429, 32</value>
</data>
<data name="checkForUpdatesNowButton2.Size" type="System.Drawing.Size, System.Drawing">
<value>132, 15</value>
</data>
<data name="checkForUpdatesNowButton2.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="checkForUpdatesNowButton2.Text" xml:space="preserve">
<value>&amp;Check for Updates Now</value>
</data>
<data name="checkForUpdatesNowButton2.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton2.Name" xml:space="preserve">
<value>checkForUpdatesNowButton2</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton2.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton2.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
@ -366,11 +525,17 @@
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel2.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 60</value>
</data>
<data name="tableLayoutPanel2.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 35</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
<value>3</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>776, 27</value>
<value>776, 52</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
@ -385,34 +550,133 @@
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="tableLayoutPanel2.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="toolStrip1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,27" /&gt;&lt;/TableLayoutSettings&gt;</value>
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="toolStrip1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="AutoCheckForUpdatesDisabledLabel" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="pictureBox1" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="checkForUpdatesNowButton2" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,25,AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="Absolute,27,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="panelProgress.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
<data name="button2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="panelProgress.AutoSize" type="System.Boolean, mscorlib">
<data name="button2.Location" type="System.Drawing.Point, System.Drawing">
<value>397, 3</value>
</data>
<data name="button2.Size" type="System.Drawing.Size, System.Drawing">
<value>188, 23</value>
</data>
<data name="button2.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="button2.Text" xml:space="preserve">
<value>Check for Updates Now</value>
</data>
<data name="&gt;&gt;button2.Name" xml:space="preserve">
<value>button2</value>
</data>
<data name="&gt;&gt;button2.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="button1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>383, 3</value>
</data>
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>165, 8</value>
</data>
<data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="button1.Text" xml:space="preserve">
<value>Check for Updates Now</value>
</data>
<data name="&gt;&gt;button1.Name" xml:space="preserve">
<value>button1</value>
</data>
<data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="tableLayoutPanel3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="tableLayoutPanel3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="panelProgress.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
<data name="tableLayoutPanel3.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="checkForUpdatesNowButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="checkForUpdatesNowButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="checkForUpdatesNowButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="checkForUpdatesNowButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="checkForUpdatesNowButton.Location" type="System.Drawing.Point, System.Drawing">
<value>219, 45</value>
</data>
<data name="checkForUpdatesNowButton.Size" type="System.Drawing.Size, System.Drawing">
<value>142, 24</value>
</data>
<data name="checkForUpdatesNowButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="checkForUpdatesNowButton.Text" xml:space="preserve">
<value>Check for &amp;Updates Now</value>
</data>
<data name="checkForUpdatesNowButton.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton.Name" xml:space="preserve">
<value>checkForUpdatesNowButton</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton.Parent" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;checkForUpdatesNowButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>None</value>
</data>
<data name="tableLayoutPanel4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel4.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelProgress.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left, Right</value>
</data>
<data name="labelProgress.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelProgress.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt, style=Bold</value>
<value>Segoe UI, 9.5pt, style=Bold</value>
</data>
<data name="labelProgress.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="labelProgress.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelProgress.Location" type="System.Drawing.Point, System.Drawing">
<value>43, 11</value>
<value>49, 9</value>
</data>
<data name="labelProgress.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>170, 0</value>
</data>
<data name="labelProgress.Size" type="System.Drawing.Size, System.Drawing">
<value>138, 15</value>
<value>170, 17</value>
</data>
<data name="labelProgress.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -420,6 +684,9 @@
<data name="labelProgress.Text" xml:space="preserve">
<value>Searching for updates...</value>
</data>
<data name="labelProgress.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;labelProgress.Name" xml:space="preserve">
<value>labelProgress</value>
</data>
@ -427,11 +694,14 @@
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;labelProgress.Parent" xml:space="preserve">
<value>panelProgress</value>
<value>tableLayoutPanel4</value>
</data>
<data name="&gt;&gt;labelProgress.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pictureBoxProgress.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Right</value>
</data>
<data name="pictureBoxProgress.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
@ -442,7 +712,10 @@
<value>3, 3</value>
</data>
<data name="pictureBoxProgress.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 32</value>
<value>40, 30</value>
</data>
<data name="pictureBoxProgress.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="pictureBoxProgress.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -454,37 +727,64 @@
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pictureBoxProgress.Parent" xml:space="preserve">
<value>panelProgress</value>
<value>tableLayoutPanel4</value>
</data>
<data name="&gt;&gt;pictureBoxProgress.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panelProgress.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
<data name="tableLayoutPanel4.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 3</value>
</data>
<data name="panelProgress.Location" type="System.Drawing.Point, System.Drawing">
<value>298, 185</value>
<data name="tableLayoutPanel4.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="panelProgress.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 38</value>
<data name="tableLayoutPanel4.Size" type="System.Drawing.Size, System.Drawing">
<value>222, 36</value>
</data>
<data name="panelProgress.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
<data name="tableLayoutPanel4.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="panelProgress.Visible" type="System.Boolean, mscorlib">
<value>False</value>
<data name="&gt;&gt;tableLayoutPanel4.Name" xml:space="preserve">
<value>tableLayoutPanel4</value>
</data>
<data name="&gt;&gt;panelProgress.Name" xml:space="preserve">
<value>panelProgress</value>
<data name="&gt;&gt;tableLayoutPanel4.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panelProgress.Type" xml:space="preserve">
<value>XenAdmin.Controls.FlickerFreePanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<data name="&gt;&gt;tableLayoutPanel4.Parent" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;panelProgress.Parent" xml:space="preserve">
<data name="&gt;&gt;tableLayoutPanel4.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel4.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="labelProgress" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="pictureBoxProgress" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanel3.Location" type="System.Drawing.Point, System.Drawing">
<value>102, 156</value>
</data>
<data name="tableLayoutPanel3.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel3.Size" type="System.Drawing.Size, System.Drawing">
<value>580, 72</value>
</data>
<data name="tableLayoutPanel3.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.Name" xml:space="preserve">
<value>tableLayoutPanel3</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel3.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;panelProgress.ZOrder" xml:space="preserve">
<value>1</value>
<data name="&gt;&gt;tableLayoutPanel3.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel3.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="checkForUpdatesNowButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel4" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="AutoSize,0,Absolute,17" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="dataGridViewUpdates.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
@ -525,7 +825,7 @@
<value>Message</value>
</data>
<data name="ColumnMessage.MinimumWidth" type="System.Int32, mscorlib">
<value>70</value>
<value>80</value>
</data>
<metadata name="ColumnLocation.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
@ -567,10 +867,10 @@
<value>0, 12, 0, 12</value>
</data>
<data name="dataGridViewUpdates.Size" type="System.Drawing.Size, System.Drawing">
<value>776, 316</value>
<value>773, 357</value>
</data>
<data name="dataGridViewUpdates.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<value>2</value>
</data>
<data name="&gt;&gt;dataGridViewUpdates.Name" xml:space="preserve">
<value>dataGridViewUpdates</value>
@ -587,6 +887,9 @@
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>129</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
@ -597,7 +900,7 @@
<value>12, 12, 12, 12</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>800, 420</value>
<value>800, 466</value>
</data>
<data name="&gt;&gt;toolStripDropDownButtonServerFilter.Name" xml:space="preserve">
<value>toolStripDropDownButtonServerFilter</value>
@ -641,6 +944,30 @@
<data name="&gt;&gt;toolStripLabelFiltersOnOff.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripSplitButtonDismiss.Name" xml:space="preserve">
<value>toolStripSplitButtonDismiss</value>
</data>
<data name="&gt;&gt;toolStripSplitButtonDismiss.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripSplitButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;dismissAllToolStripMenuItem.Name" xml:space="preserve">
<value>dismissAllToolStripMenuItem</value>
</data>
<data name="&gt;&gt;dismissAllToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;dismissSelectedToolStripMenuItem.Name" xml:space="preserve">
<value>dismissSelectedToolStripMenuItem</value>
</data>
<data name="&gt;&gt;dismissSelectedToolStripMenuItem.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripButtonRestoreDismissed.Name" xml:space="preserve">
<value>toolStripButtonRestoreDismissed</value>
</data>
<data name="&gt;&gt;toolStripButtonRestoreDismissed.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnExpand.Name" xml:space="preserve">
<value>ColumnExpand</value>
</data>
@ -671,12 +998,6 @@
<data name="&gt;&gt;ColumnWebPage.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripButtonRestoreDismissed.Name" xml:space="preserve">
<value>toolStripButtonRestoreDismissed</value>
</data>
<data name="&gt;&gt;toolStripButtonRestoreDismissed.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>ManageUpdatesPage</value>
</data>

View File

@ -108,7 +108,6 @@ namespace XenAdmin.Core
{
handler(this, e);
}
}
}
}

View File

@ -10499,6 +10499,15 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to No updates found because automatic checking for updates is disabled..
/// </summary>
public static string DISABLED_UPDATE_AUTOMATIC_CHECK_WARNING {
get {
return ResourceManager.GetString("DISABLED_UPDATE_AUTOMATIC_CHECK_WARNING", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to VM protection policy &apos;{0}&apos; disabled..
/// </summary>
@ -32143,6 +32152,28 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to You have applied filters to the list of updates. Do you wish to dismiss all updates from every connected server, or only the updates you have chosen to view? In both cases the dismissed updates will be removed from the servers permanently.
///
///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected..
/// </summary>
public static string UPDATE_DISMISS_ALL_CONTINUE {
get {
return ResourceManager.GetString("UPDATE_DISMISS_ALL_CONTINUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to This operation will remove permanently all updates from every connected server. Do you wish to continue?
///
///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected..
/// </summary>
public static string UPDATE_DISMISS_ALL_NO_FILTER_CONTINUE {
get {
return ResourceManager.GetString("UPDATE_DISMISS_ALL_NO_FILTER_CONTINUE", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Are you sure you want to dismiss this update?.
/// </summary>
@ -32152,6 +32183,17 @@ namespace XenAdmin {
}
}
/// <summary>
/// Looks up a localized string similar to This operation will remove the selected updates from the servers permanently. Do you wish to continue?
///
///Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected..
/// </summary>
public static string UPDATE_DISMISS_SELECTED_CONFIRM {
get {
return ResourceManager.GetString("UPDATE_DISMISS_SELECTED_CONFIRM", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to You have applied filters to the list of updates. Do you wish to export all updates from every connected server, or only the updates you have chosen to view?.
/// </summary>

View File

@ -3712,6 +3712,9 @@ This will also delete its subfolders.</value>
<data name="DISABLED" xml:space="preserve">
<value>Disabled</value>
</data>
<data name="DISABLED_UPDATE_AUTOMATIC_CHECK_WARNING" xml:space="preserve">
<value>No updates found because automatic checking for updates is disabled.</value>
</data>
<data name="DISABLED_VMPP" xml:space="preserve">
<value>VM protection policy '{0}' disabled.</value>
</data>
@ -11423,9 +11426,24 @@ Check your settings and try again.</value>
<data name="UPDATES_WIZARD_WLB_ON_WARNING" xml:space="preserve">
<value>{0}: Check skipped because WLB is enabled on pool {1}.</value>
</data>
<data name="UPDATE_DISMISS_ALL_CONTINUE" xml:space="preserve">
<value>You have applied filters to the list of updates. Do you wish to dismiss all updates from every connected server, or only the updates you have chosen to view? In both cases the dismissed updates will be removed from the servers permanently.
Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected.</value>
</data>
<data name="UPDATE_DISMISS_ALL_NO_FILTER_CONTINUE" xml:space="preserve">
<value>This operation will remove permanently all updates from every connected server. Do you wish to continue?
Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected.</value>
</data>
<data name="UPDATE_DISMISS_CONFIRM" xml:space="preserve">
<value>Are you sure you want to dismiss this update?</value>
</data>
<data name="UPDATE_DISMISS_SELECTED_CONFIRM" xml:space="preserve">
<value>This operation will remove the selected updates from the servers permanently. Do you wish to continue?
Note that if RBAC is enabled, only updates which you have privileges to dismiss will be affected.</value>
</data>
<data name="UPDATE_EXPORT_ALL_OR_FILTERED" xml:space="preserve">
<value>You have applied filters to the list of updates. Do you wish to export all updates from every connected server, or only the updates you have chosen to view?</value>
</data>