Merge pull request #1861 from kc284/REQ-420

Merged master into REQ-420
This commit is contained in:
Konstantina Chremmou 2017-11-23 15:13:03 +00:00 committed by GitHub
commit 715ac5d0e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
311 changed files with 24293 additions and 4319 deletions

View File

@ -1,9 +1,9 @@
List of maintainers
===================
* Stephen Turner <Stephen.Turner@citrix.com>
* Mihaela Stoica <mihaela.stoica@citrix.com>
* Konstantina Chremmou <konstantina.chremmou@citrix.com>
* Gabor Apati-Nagy <gabor.apati-nagy@citrix.com>
* Joey Jiang <ji.jiang@citrix.com>
-----------------------------------------------------------------------------

View File

@ -0,0 +1,68 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace XenAdmin.Alerts
{
public class NewVersionPriorityAlertComparer : IComparer<Alert>
{
public int Compare(Alert alert1, Alert alert2)
{
if (alert1 == null || alert2 == null)
return 0;
int sortResult = 0;
if (IsVersionOrVersionUpdateAlert(alert1) && !IsVersionOrVersionUpdateAlert(alert2))
sortResult = 1;
if (!IsVersionOrVersionUpdateAlert(alert1) && IsVersionOrVersionUpdateAlert(alert2))
sortResult = -1;
if (sortResult == 0)
sortResult = Alert.CompareOnDate(alert1, alert2);
return -sortResult;
}
private bool IsVersionOrVersionUpdateAlert(Alert alert)
{
return alert is XenServerPatchAlert && (alert as XenServerPatchAlert).ShowAsNewVersion
|| alert is XenServerVersionAlert
|| alert is XenCenterUpdateAlert;
}
}
}

View File

@ -147,6 +147,9 @@ namespace XenAdmin.Alerts
case XenAPI.Message.MessageType.POOL_CPU_FEATURES_DOWN:
case XenAPI.Message.MessageType.HOST_CPU_FEATURES_UP:
case XenAPI.Message.MessageType.HOST_CPU_FEATURES_DOWN:
case XenAPI.Message.MessageType.VDI_CBT_RESIZE_FAILED:
case XenAPI.Message.MessageType.VDI_CBT_SNAPSHOT_FAILED:
case XenAPI.Message.MessageType.VDI_CBT_METADATA_INCONSISTENT:
if (XenObject != null)
return string.Format(FriendlyFormat(), Helpers.GetName(XenObject));
break;
@ -171,7 +174,7 @@ namespace XenAdmin.Alerts
if (XenObject != null)
{
Host host = XenObject as Host ?? Helpers.GetMaster(Connection);
return string.Format(FriendlyFormat(), Helpers.GetName(XenObject), host == null ? Messages.UNKNOWN : HelpersGUI.HostLicenseExpiryString(host, true, DateTime.UtcNow));
return string.Format(FriendlyFormat(), Helpers.GetName(XenObject));
}
break;

View File

@ -51,7 +51,7 @@ namespace XenAdmin.Alerts
public override string WebPageLabel
{
get { return Messages.AVAILABLE_UPDATES_DOWNLOAD_TEXT; }
get { return NewVersion.Url; }
}
public override string Name
@ -61,7 +61,7 @@ namespace XenAdmin.Alerts
public override string Title
{
get { return Messages.ALERT_NEW_VERSION; }
get { return string.Format(Messages.ALERT_NEW_VERSION, NewVersion.Name); }
}
public override string Description
@ -101,16 +101,25 @@ namespace XenAdmin.Alerts
}
}
static int DISMISSED_XC_VERSIONS_LIMIT = 5;
public override void Dismiss()
{
Properties.Settings.Default.LatestXenCenterSeen = NewVersion.VersionAndLang;
{
List<string> current = new List<string>(Properties.Settings.Default.LatestXenCenterSeen.Split(','));
if (current.Contains(NewVersion.VersionAndLang))
return;
if (current.Count >= DISMISSED_XC_VERSIONS_LIMIT)
current.RemoveRange(0, current.Count - DISMISSED_XC_VERSIONS_LIMIT + 1);
current.Add(NewVersion.VersionAndLang);
Properties.Settings.Default.LatestXenCenterSeen = string.Join(",", current.ToArray());
Settings.TrySaveSettings();
Updates.RemoveUpdate(this);
}
public override bool IsDismissed()
{
return Properties.Settings.Default.LatestXenCenterSeen == NewVersion.VersionAndLang;
List<string> current = new List<string>(Properties.Settings.Default.LatestXenCenterSeen.Split(','));
return current.Contains(NewVersion.VersionAndLang);
}
public override bool Equals(Alert other)

View File

@ -36,6 +36,7 @@ using XenAdmin.Network;
using XenAdmin.Actions;
using XenAdmin.Core;
using XenAPI;
using System.Text;
namespace XenAdmin.Alerts
@ -43,7 +44,8 @@ namespace XenAdmin.Alerts
public class XenServerPatchAlert : XenServerUpdateAlert
{
public XenServerPatch Patch;
public XenServerVersion NewServerVersion;
/// <summary>
/// Can we apply this alert. Calling this sets the CannotApplyReason where applicable
/// </summary>
@ -83,9 +85,17 @@ namespace XenAdmin.Alerts
return !host.CanApplyHotfixes();
}
public XenServerPatchAlert(XenServerPatch patch)
/// <summary>
/// Creates a patch alert
/// </summary>
/// <param name="patch">The patch</param>
/// <param name="newServerVersion">The version that the patch installs, or null if the patch doesn't update the server version</param>
public XenServerPatchAlert(XenServerPatch patch, XenServerVersion newServerVersion = null)
{
Patch = patch;
NewServerVersion = newServerVersion;
if (NewServerVersion != null)
RequiredXenCenterVersion = Updates.GetRequiredXenCenterVersion(NewServerVersion);
_priority = patch.Priority;
_timestamp = Patch.TimeStamp;
}
@ -94,8 +104,7 @@ namespace XenAdmin.Alerts
{
get
{
Uri uri = new Uri(Patch.Url);
return uri.Segments.Last();
return Patch.Url;
}
}
@ -114,15 +123,30 @@ namespace XenAdmin.Alerts
{
get
{
StringBuilder sb = new StringBuilder();
sb.Append(Patch.Description);
if (Patch.InstallationSize != 0)
return string.Format(Messages.PATCH_DESCRIPTION_AND_INSTALLATION_SIZE, Patch.Description, Util.DiskSizeString(Patch.InstallationSize));
return Patch.Description;
{
sb.AppendLine();
sb.AppendFormat(Messages.PATCH_INSTALLATION_SIZE, Util.DiskSizeString(Patch.InstallationSize));
}
if (RequiredXenCenterVersion != null)
{
sb.AppendLine();
sb.AppendFormat(Messages.PATCH_NEEDS_NEW_XENCENTER, RequiredXenCenterVersion.Version);
}
return sb.ToString();
}
}
public override string Name
{
get { return Patch.Name; }
get
{
if (ShowAsNewVersion)
return NewServerVersion.Name;
return Patch.Name;
}
}
public override Action FixLinkAction
@ -148,7 +172,12 @@ namespace XenAdmin.Alerts
public override string Title
{
get { return string.Format(Messages.NEW_UPDATE_AVAILABLE, Patch.Name); }
get
{
if (ShowAsNewVersion)
return string.Format(Messages.DOWLOAD_LATEST_XS_TITLE, NewServerVersion.Name);
return string.Format(Messages.NEW_UPDATE_AVAILABLE, Patch.Name);
}
}
public override bool IsDismissed()
@ -185,5 +214,13 @@ namespace XenAdmin.Alerts
}
return base.Equals(other);
}
public bool ShowAsNewVersion
{
get
{
return NewServerVersion != null && !NewServerVersion.PresentAsUpdate;
}
}
}
}

View File

@ -45,6 +45,8 @@ namespace XenAdmin.Alerts
protected readonly List<IXenConnection> connections = new List<IXenConnection>();
private readonly List<Host> hosts = new List<Host>();
public XenCenterVersion RequiredXenCenterVersion;
public bool CanIgnore
{
get { return (connections.Count == 0 && hosts.Count == 0) || IsDismissed(); }

View File

@ -47,12 +47,13 @@ namespace XenAdmin.Alerts
public XenServerVersionAlert(XenServerVersion version)
{
Version = version;
RequiredXenCenterVersion = Updates.GetRequiredXenCenterVersion(Version);
_timestamp = version.TimeStamp;
}
public override string WebPageLabel
{
get { return Messages.AVAILABLE_UPDATES_DOWNLOAD_TEXT; }
get { return Version.Url; }
}
public override string Name

View File

@ -72,7 +72,7 @@ namespace XenAdmin.Commands
Dictionary<SelectedItem, string> reasons = new Dictionary<SelectedItem, string>();
foreach (Host host in _hosts)
{
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(host.Connection, _pool.Connection, true, true, true);
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(host.Connection, _pool.Connection, true, true, true, _hosts.Count);
if (reason != PoolJoinRules.Reason.Allowed)
reasons[new SelectedItem(host)] = PoolJoinRules.ReasonMessage(reason);
}
@ -124,8 +124,8 @@ namespace XenAdmin.Commands
Helpers.FeatureForbidden(host, Host.RestrictCpuMasking) &&
!PoolJoinRules.FreeHostPaidMaster(host, master, false))) // in this case we can upgrade the license and then mask the CPU
{
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_CPUMASKING : Messages.UPSELL_BLURB_CPUMASKING + Messages.UPSELL_BLURB_CPUMASKING_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_CPUMASKING))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_CPUMASKING : Messages.UPSELL_BLURB_CPUMASKING + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(Parent);
return;
}

View File

@ -73,9 +73,18 @@ namespace XenAdmin.Commands
base.DropDownItems.Add(new ToolStripMenuItem());
}
private bool _isDropDownClosed;
protected override void OnDropDownClosed(EventArgs e)
{
base.OnDropDownClosed(e);
_isDropDownClosed = true;
}
protected override void OnDropDownOpening(EventArgs e)
{
base.DropDownItems.Clear();
_isDropDownClosed = false;
// Work around bug in tool kit where disabled menu items show their dropdown menus
if (!Enabled)
@ -193,9 +202,18 @@ namespace XenAdmin.Commands
});
List<VMOperationToolStripMenuSubItem> dropDownItems = DropDownItems.Cast<VMOperationToolStripMenuSubItem>().ToList();
// Adds the migrate wizard button, do this before the enable checks on the other items
Program.Invoke(Program.MainWindow, () => AddAdditionalMenuItems(selection));
foreach (VMOperationToolStripMenuSubItem item in dropDownItems)
{
if (_isDropDownClosed)
{
// Stop making requests to assert can start on each host after dropdown is closed
break;
}
Host host = item.Tag as Host;
if (host != null)
{
@ -213,8 +231,6 @@ namespace XenAdmin.Commands
});
}
}
Program.Invoke(Program.MainWindow, () => AddAdditionalMenuItems(selection));
}
/// <summary>

View File

@ -57,15 +57,8 @@ namespace XenAdmin.Commands
{
var con = selection.GetConnectionOfFirstItem();
if (Helpers.FeatureForbidden(con, Host.RestrictCrossPoolMigrate))
{
ShowUpsellDialog(Parent);
}
else
{
MainWindowCommandInterface.ShowPerConnectionWizard(con,
new CrossPoolMigrateWizard(con, selection, preSelectedHost, WizardMode.Copy));
}
MainWindowCommandInterface.ShowPerConnectionWizard(con,
new CrossPoolMigrateWizard(con, selection, preSelectedHost, WizardMode.Copy));
}
protected override bool CanExecute(VM vm)

View File

@ -104,8 +104,8 @@ namespace XenAdmin.Commands
public static void ShowUpsellDialog(IWin32Window parent)
{
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_CPM : Messages.UPSELL_BLURB_CPM + Messages.UPSELL_BLURB_CPM_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_CPM))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_CPM : Messages.UPSELL_BLURB_CPM + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(parent);
}

View File

@ -118,8 +118,8 @@ namespace XenAdmin.Commands
private static void ShowUpsellDialog(IWin32Window parent)
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_DR_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_DR))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(parent);
}

View File

@ -94,8 +94,8 @@ namespace XenAdmin.Commands
public static void ShowUpsellDialog(IWin32Window parent)
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_DR_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_DR))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(parent);
}

View File

@ -97,8 +97,8 @@ namespace XenAdmin.Commands
public static void ShowUpsellDialog(IWin32Window parent)
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_DR_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_DR))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(parent);
}

View File

@ -94,8 +94,8 @@ namespace XenAdmin.Commands
public static void ShowUpsellDialog(IWin32Window parent)
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_DR_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_DR))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(parent);
}

View File

@ -0,0 +1,155 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.Linq;
using XenAdmin.Actions;
using XenAdmin.Core;
using XenAPI;
namespace XenAdmin.Commands
{
/// <summary>
/// Disable changed block tracking of the selected VM.
/// </summary>
internal class DisableChangedBlockTrackingCommand : Command
{
/// <summary>
/// Initializes a new instance of this Command. The parameter-less constructor is required if
/// this Command is to be attached to a ToolStrip menu item or button. It should not be used in any other scenario.
/// </summary>
public DisableChangedBlockTrackingCommand()
{
}
public DisableChangedBlockTrackingCommand(IMainWindow mainWindow, IEnumerable<SelectedItem> selection)
: base(mainWindow, selection)
{
}
public DisableChangedBlockTrackingCommand(IMainWindow mainWindow, IXenObject xenObject)
: base(mainWindow, xenObject)
{
}
private void Execute(IList<VM> vms)
{
var actions = new List<AsyncAction>();
foreach (var vm in vms)
{
if (vm.is_a_template)
continue;
foreach (VBD vbd in vm.Connection.ResolveAll(vm.VBDs))
{
VDI vdi = vm.Connection.Resolve(vbd.VDI);
if (vdi != null && vdi.cbt_enabled)
actions.Add(new VDIDisableCbtAction(vm, vdi));
}
}
if (actions.Any())
{
if (actions.Count == 1)
{
actions[0].RunAsync();
}
else
{
new ParallelAction(
Messages.ACTION_DISABLE_CHANGED_BLOCK_TRACKING,
Messages.ACTION_DISABLING_CHANGED_BLOCK_TRACKING,
Messages.ACTION_DISABLED_CHANGED_BLOCK_TRACKING,
actions).RunAsync();
}
}
}
protected override void ExecuteCore(SelectedItemCollection selection)
{
Execute(selection.AsXenObjects<VM>());
}
private bool CbtLicensed(VM vm)
{
return !Helpers.FeatureForbidden(vm.Connection, Host.RestrictChangedBlockTracking);
}
private bool CanExecute(VM vm)
{
return vm != null &&
!vm.is_a_template &&
vm.Connection.ResolveAll(vm.VBDs).Any(vbd => vm.Connection.Resolve(vbd.VDI) != null && vm.Connection.Resolve(vbd.VDI).cbt_enabled);
}
protected override bool CanExecuteCore(SelectedItemCollection selection)
{
// Can execute criteria: A selection of VMs in the same pool which has CBT feature licensed, where at least one VM having CBT enabled
return selection.AllItemsAre<VM>(CbtLicensed) &&
selection.GetConnectionOfAllItems() != null &&
selection.AtLeastOneXenObjectCan<VM>(CanExecute);
}
public override string MenuText
{
get { return Messages.MAINWINDOW_DISABLE_CHANGED_BLOCK_TRACKING; }
}
protected override bool ConfirmationRequired
{
get { return true; }
}
protected override string ConfirmationDialogText
{
get
{
return GetSelection().Count == 1 ? Messages.CONFIRM_DISABLE_CBT_VM : Messages.CONFIRM_DISABLE_CBT_VMS;
}
}
protected override string ConfirmationDialogTitle
{
get
{
return GetSelection().Count == 1 ? String.Format(Messages.CONFIRM_DISABLE_CBT_VM_TITLE, GetSelection().AsXenObjects<VM>()[0].Name()) :
Messages.CONFIRM_DISABLE_CBT_VMs_TITLE;
}
}
protected override string ConfirmationDialogHelpId
{
get { return "WarningVmDisableChangedBlockTracking"; }
}
}
}

View File

@ -91,8 +91,8 @@ namespace XenAdmin.Commands
public static void ShowUpsellDialog(IWin32Window parent)
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_DR_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_DR))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_DR : Messages.UPSELL_BLURB_DR + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(parent);
}

View File

@ -63,8 +63,8 @@ namespace XenAdmin.Commands
if (Helpers.FeatureForbidden(selection[0].XenObject, Host.RestrictWLB))
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_WLB : Messages.UPSELL_BLURB_WLB + Messages.UPSELL_BLURB_WLB_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_WLB))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_WLB : Messages.UPSELL_BLURB_WLB + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(Parent);
return;
}

View File

@ -72,7 +72,7 @@ namespace XenAdmin.Commands
{
foreach (Host draggedHost in draggedHosts)
{
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(draggedHost.Connection, targetPool.Connection, true, true, true);
PoolJoinRules.Reason reason = PoolJoinRules.CanJoinPool(draggedHost.Connection, targetPool.Connection, true, true, true, draggedHosts.Count);
if (reason != PoolJoinRules.Reason.Allowed)
{
string reasonString = PoolJoinRules.ReasonMessage(reason);

View File

@ -74,12 +74,7 @@ namespace XenAdmin.Commands
!draggedVM.allowed_operations.Contains(vm_operations.migrate_send))
{
if (draggedVM.power_state == vm_power_state.Running)
{
if (draggedVM.HasVGPUs())
return Messages.MIGRATION_NOT_ALLOWED_GPU;
else
return Messages.MIGRATION_NOT_ALLOWED;
}
return Messages.MIGRATION_NOT_ALLOWED;
return null;
}

View File

@ -82,8 +82,8 @@ namespace XenAdmin.Commands
if (Helpers.FeatureForbidden(pool, Host.RestrictHA))
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_HA : Messages.UPSELL_BLURB_HA + Messages.UPSELL_BLURB_HA_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_HA))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_HA : Messages.UPSELL_BLURB_HA + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(Parent);
}
else if (pool.ha_enabled)

View File

@ -67,9 +67,9 @@ namespace XenAdmin.Commands
{
string theText = HiddenFeatures.LinkLabelHidden
? Messages.MIGRATE_VDI_UPSELL_BLURB
: Messages.MIGRATE_VDI_UPSELL_BLURB + Messages.MIGRATE_VDI_UPSELL_BLURB_MORE;
: Messages.MIGRATE_VDI_UPSELL_BLURB + Messages.UPSELL_BLURB_TRIAL;
using (var dlg = new UpsellDialog(theText, InvisibleMessages.UPSELL_LEARNMOREURL_CPM))
using (var dlg = new UpsellDialog(theText, InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(Parent);
}
else
@ -85,7 +85,7 @@ namespace XenAdmin.Commands
private bool CanBeMigrated(VDI vdi)
{
if (vdi == null || vdi.is_a_snapshot || vdi.Locked || vdi.IsHaType())
if (vdi == null || vdi.is_a_snapshot || vdi.Locked || vdi.IsHaType() || vdi.cbt_enabled)
return false;
if(vdi.Connection.ResolveAll(vdi.VBDs).Count == 0)
@ -114,6 +114,8 @@ namespace XenAdmin.Commands
return Messages.CANNOT_MOVE_VDI_IN_USE;
if (vdi.IsHaType())
return Messages.CANNOT_MOVE_HA_VD;
if (vdi.cbt_enabled)
return Messages.CANNOT_MOVE_CBT_ENABLED_VDI;
if (vdi.IsMetadataForDR())
return Messages.CANNOT_MOVE_DR_VD;
if (vdi.GetVMs().Any(vm => !vm.IsRunning()) && !Helpers.DundeeOrGreater(vdi.Connection))

View File

@ -80,9 +80,22 @@ namespace XenAdmin.Commands
protected override bool CanExecuteCore(SelectedItemCollection selection)
{
if (selection.AllItemsAre<VM>() && new CrossPoolMoveVMCommand(MainWindowCommandInterface, selection).CanExecute())
return true;
return selection.ContainsOneItemOfType<VM>() && selection.AtLeastOneXenObjectCan<VM>(CanExecute);
return selection.AllItemsAre<VM>(CBTDisabled) &&
(new CrossPoolMoveVMCommand(MainWindowCommandInterface, selection).CanExecute() ||
selection.ContainsOneItemOfType<VM>(CanExecute));
}
private bool CBTDisabled(VM vm)
{
if (vm == null)
return false;
foreach (var vbd in vm.Connection.ResolveAll(vm.VBDs))
{
var vdi = vm.Connection.Resolve(vbd.VDI);
if (vdi != null && vdi.cbt_enabled)
return false;
}
return true;
}
private static bool CanExecute(VM vm)

View File

@ -74,7 +74,7 @@ namespace XenAdmin.Commands
private bool CanBeMoved(VDI vdi)
{
if (vdi == null || vdi.is_a_snapshot || vdi.Locked || vdi.IsHaType())
if (vdi == null || vdi.is_a_snapshot || vdi.Locked || vdi.IsHaType() || vdi.cbt_enabled)
return false;
if (vdi.VBDs.Count != 0)
return false;
@ -98,6 +98,8 @@ namespace XenAdmin.Commands
return Messages.CANNOT_MOVE_VDI_IN_USE;
if (vdi.IsHaType())
return Messages.CANNOT_MOVE_HA_VD;
if (vdi.cbt_enabled)
return Messages.CANNOT_MOVE_CBT_ENABLED_VDI;
if (vdi.IsMetadataForDR())
return Messages.CANNOT_MOVE_DR_VD;
if (vdi.VBDs.Count != 0)

View File

@ -38,6 +38,7 @@ using XenAdmin.Core;
using XenAdmin.Properties;
using XenAPI;
using XenAdmin.Dialogs;
using System.Text;
namespace XenAdmin.Commands
@ -135,6 +136,7 @@ namespace XenAdmin.Commands
List<Host> hosts = GetSelection().AsXenObjects<Host>();
bool hasRunningVMs = false;
var hciHosts = new List<Host>();
var poolMasters = new List<Host>();
foreach (Host h in hosts)
{
@ -143,21 +145,44 @@ namespace XenAdmin.Commands
if (h.Connection.ResolveAll(h.resident_VMs).Exists(v => v.HciWarnBeforeShutdown()))
hciHosts.Add(h);
if (Helpers.HostIsMaster(h) && h.Connection.Cache.HostCount > 1)
poolMasters.Add(h);
}
StringBuilder sb = new StringBuilder();
string firstWarning;
if (hciHosts.Count > 0)
return hciHosts.Count == 1
firstWarning = hciHosts.Count == 1
? string.Format(Messages.CONFIRM_SHUTDOWN_HCI_WARN_SERVER, hciHosts[0].Name())
: string.Format(Messages.CONFIRM_SHUTDOWN_HCI_WARN_SERVERS, string.Join("\n", hciHosts.Select(h => h.Name())));
if (hasRunningVMs)
return hosts.Count == 1
else if (hasRunningVMs)
firstWarning = hosts.Count == 1
? string.Format(Messages.CONFIRM_SHUTDOWN_SERVER, hosts[0].Name())
: Messages.CONFIRM_SHUTDOWN_SERVERS;
return hosts.Count == 1
else firstWarning = hosts.Count == 1
? string.Format(Messages.CONFIRM_SHUTDOWN_SERVER_NO_VMS, hosts[0].Name())
: Messages.CONFIRM_SHUTDOWN_SERVERS_NO_VMS;
sb.Append(firstWarning);
if (poolMasters.Count == 1)
{
sb.AppendLine();
sb.AppendLine();
sb.AppendFormat(Messages.SHUT_DOWN_POOL_MASTER_SINGLE, poolMasters[0].Name());
}
else if (poolMasters.Count > 1)
{
sb.AppendLine();
sb.AppendLine();
sb.AppendFormat(Messages.SHUT_DOWN_POOL_MASTER_MULTIPLE, string.Join(", ", poolMasters.Select(h => h.Name())));
}
return sb.ToString();
}
}

View File

@ -84,8 +84,8 @@ namespace XenAdmin.Commands
if (Helpers.FeatureForbidden(selection[0].XenObject, Host.RestrictWLB))
{
// Show upsell dialog
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_WLB : Messages.UPSELL_BLURB_WLB + Messages.UPSELL_BLURB_WLB_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_WLB))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_WLB : Messages.UPSELL_BLURB_WLB + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(Parent);
return;
}

View File

@ -50,10 +50,20 @@ namespace XenAdmin.ConsoleView
private readonly ContainerControl parent;
public bool needsRdpVersionWarning = false;
/// <summary>
/// http://msdn2.microsoft.com/en-us/library/aa383022(VS.85).aspx
/// </summary>
private MsRdpClient9 rdpClient = null;
private MsRdpClient9 rdpClient9 = null;
private MsRdpClient6 rdpClient6 = null;
/// <summary>
/// This will be equal to rdpClient9, if the DLL that we've got is version 8, otherwise equal to
/// rdpClient6.
/// </summary>
private AxHost rdpControl = null;
public event EventHandler OnDisconnected = null;
@ -63,39 +73,44 @@ namespace XenAdmin.ConsoleView
this.size = size;
try
{
rdpClient = new MsRdpClient9();
rdpControl = rdpClient9 = new MsRdpClient9();
RDPConfigure(size);
//add event handler for when RDP display is resized
rdpClient.OnRemoteDesktopSizeChange += rdpClient_OnRemoteDesktopSizeChange;
rdpClient.Resize += resizeHandler;
rdpClient9.OnRemoteDesktopSizeChange += rdpClient_OnRemoteDesktopSizeChange;
// CA-96135: Try adding rdpControl to parent.Controls list; this will throw exception when
// MsRdpClient9 control cannot be created (there is no appropriate version of dll present)
parent.Controls.Add(rdpClient);
// MsRdpClient8 control cannot be created (there is no appropriate version of dll present)
parent.Controls.Add(rdpControl);
allowDisplayUpdate = true;
needsRdpVersionWarning = false;
}
catch (Exception ex)
catch
{
if (parent.Controls.Contains(rdpClient))
parent.Controls.Remove(rdpClient);
rdpClient.Dispose();
rdpClient = null;
Log.Error("Adding rdpControl to parent.Controls list caused an exception.", ex);
//any problems: fall back without thinking too much
if (parent.Controls.Contains(rdpControl))
parent.Controls.Remove(rdpControl);
rdpClient9 = null;
rdpControl = rdpClient6 = new MsRdpClient6();
RDPConfigure(size);
parent.Controls.Add(rdpControl);
needsRdpVersionWarning = true;
}
rdpControl.Resize += resizeHandler;
}
private void RDPConfigure(Size currentConsoleSize)
{
rdpClient.BeginInit();
rdpLocationOffset = new Point(3, 3); //small offset to accomodate focus border
rdpClient.Dock = DockStyle.None;
rdpClient.Anchor = AnchorStyles.None;
rdpClient.Size = currentConsoleSize;
rdpControl.BeginInit();
rdpLocationOffset = new Point(3, 3); //small offset to accomodate focus rectangle
rdpControl.Dock = DockStyle.None;
rdpControl.Anchor = AnchorStyles.None;
rdpControl.Size = currentConsoleSize;
RDPAddOnDisconnected();
rdpClient.Enter += RdpEnter;
rdpClient.Leave += rdpClient_Leave;
rdpClient.GotFocus += rdpClient_GotFocus;
rdpClient.EndInit();
rdpControl.Enter += RdpEnter;
rdpControl.Leave += rdpClient_Leave;
rdpControl.GotFocus += rdpClient_GotFocus;
rdpControl.EndInit();
}
@ -103,61 +118,90 @@ namespace XenAdmin.ConsoleView
{
set
{
if (rdpClient == null)
if (rdpControl == null)
return;
rdpClient.Location = value;
rdpControl.Location = value;
}
}
private void RDPAddOnDisconnected()
{
if (rdpClient == null)
if (rdpControl == null)
return;
rdpClient.OnDisconnected += rdpClient_OnDisconnected;
if (rdpClient9 == null)
rdpClient6.OnDisconnected += rdpClient_OnDisconnected;
else
rdpClient9.OnDisconnected += rdpClient_OnDisconnected;
}
private void RDPSetSettings()
{
if (rdpClient == null)
if (rdpControl == null)
return;
rdpClient.SecuredSettings2.KeyboardHookMode = Properties.Settings.Default.WindowsShortcuts ? 1 : 0;
rdpClient.SecuredSettings2.AudioRedirectionMode = Properties.Settings.Default.ReceiveSoundFromRDP ? 0 : 1;
rdpClient.AdvancedSettings3.DisableRdpdr = Properties.Settings.Default.ClipboardAndPrinterRedirection ? 0 : 1;
rdpClient.AdvancedSettings7.ConnectToAdministerServer = Properties.Settings.Default.ConnectToServerConsole;
//CA-103910 - enable NLA
rdpClient.AdvancedSettings5.AuthenticationLevel = 2;
rdpClient.AdvancedSettings7.EnableCredSspSupport = true;
if (rdpClient9 == null)
{
rdpClient6.SecuredSettings2.KeyboardHookMode = Properties.Settings.Default.WindowsShortcuts ? 1 : 0;
rdpClient6.SecuredSettings2.AudioRedirectionMode = Properties.Settings.Default.ReceiveSoundFromRDP ? 0 : 1;
rdpClient6.AdvancedSettings3.DisableRdpdr = Properties.Settings.Default.ClipboardAndPrinterRedirection ? 0 : 1;
rdpClient6.AdvancedSettings7.ConnectToAdministerServer = Properties.Settings.Default.ConnectToServerConsole;
//CA-103910 - enable NLA
rdpClient6.AdvancedSettings5.AuthenticationLevel = 2;
rdpClient6.AdvancedSettings7.EnableCredSspSupport = true;
}
else
{
rdpClient9.SecuredSettings2.KeyboardHookMode = Properties.Settings.Default.WindowsShortcuts ? 1 : 0;
rdpClient9.SecuredSettings2.AudioRedirectionMode = Properties.Settings.Default.ReceiveSoundFromRDP ? 0 : 1;
rdpClient9.AdvancedSettings3.DisableRdpdr = Properties.Settings.Default.ClipboardAndPrinterRedirection ? 0 : 1;
rdpClient9.AdvancedSettings7.ConnectToAdministerServer = Properties.Settings.Default.ConnectToServerConsole;
//CA-103910 - enable NLA
rdpClient9.AdvancedSettings5.AuthenticationLevel = 2;
rdpClient9.AdvancedSettings7.EnableCredSspSupport = true;
}
}
public void RDPConnect(string rdpIP, int w, int h)
{
if (rdpClient == null)
if (rdpControl == null)
return;
Log.DebugFormat("Connecting RDPClient9 using server '{0}', width '{1}' and height '{2}'", rdpIP, w, h);
Log.DebugFormat("Connecting RDPClient{0} using server '{1}', width '{2}' and height '{3}'",
rdpClient9 == null ? "6" : "9",
rdpIP,
w,
h);
rdpClient.Server = rdpIP;
rdpClient.DesktopWidth = w;
rdpClient.DesktopHeight = h;
rdpClient.Connect();
if (rdpClient9 == null)
{
rdpClient6.Server = rdpIP;
rdpClient6.DesktopWidth = w;
rdpClient6.DesktopHeight = h;
rdpClient6.Connect();
}
else
{
rdpClient9.Server = rdpIP;
rdpClient9.DesktopWidth = w;
rdpClient9.DesktopHeight = h;
rdpClient9.Connect();
}
}
public void UpdateDisplay(int width, int height, Point locationOffset)
{
if (rdpClient == null)
if (rdpControl == null)
return;
if (Connected && allowDisplayUpdate)
if (Connected && rdpClient9 != null && allowDisplayUpdate)
{
try
{
Log.DebugFormat("Updating display settings using width '{0}' and height '{1}'", width, height);
rdpClient.UpdateSessionDisplaySettings((uint)width, (uint)height, (uint)width, (uint)height, 1, 1, 1);
rdpClient.Size = new Size(width, height);
rdpClient9.UpdateSessionDisplaySettings((uint)width, (uint)height, (uint)width, (uint)height, 1, 1, 1);
rdpClient9.Size = new Size(width, height);
rdpLocationOffset = locationOffset;
parent.AutoScroll = false;
}
@ -165,24 +209,24 @@ namespace XenAdmin.ConsoleView
{
allowDisplayUpdate = false;
parent.AutoScroll = true;
parent.AutoScrollMinSize = rdpClient.Size;
parent.AutoScrollMinSize = rdpClient9.Size;
}
}
}
private bool Connected
{
get { return rdpClient == null ? false : rdpClient.Connected == 1; }
get { return rdpControl == null ? false : (rdpClient9 == null ? rdpClient6.Connected == 1 : rdpClient9.Connected == 1); }
}
private int DesktopHeight
{
get { return rdpClient == null ? 0 : rdpClient.DesktopHeight; }
get { return rdpControl == null ? 0 : (rdpClient9 == null ? rdpClient6.DesktopHeight : rdpClient9.DesktopHeight); }
}
private int DesktopWidth
{
get { return rdpClient == null ? 0 : rdpClient.DesktopWidth; }
get { return rdpControl == null ? 0 : (rdpClient9 == null ? rdpClient6.DesktopWidth : rdpClient9.DesktopWidth); }
}
private static readonly List<System.Windows.Forms.Timer> RdpCleanupTimers = new List<System.Windows.Forms.Timer>();
@ -200,10 +244,10 @@ namespace XenAdmin.ConsoleView
{
Program.AssertOnEventThread();
if (rdpClient == null || parent == null)
if (rdpControl == null || parent == null)
return;
rdpClient.Size = DesktopSize;
rdpControl.Size = DesktopSize;
parent.Refresh();
}
@ -215,10 +259,10 @@ namespace XenAdmin.ConsoleView
}
catch (Exception ex)
{
if (parent.Controls.Contains(rdpClient))
parent.Controls.Remove(rdpClient);
rdpClient.Dispose();
rdpClient = null;
if (parent.Controls.Contains(rdpControl))
parent.Controls.Remove(rdpControl);
rdpControl.Dispose();
rdpControl = null;
Log.Error("Setting the RDP client properties caused an exception.", ex);
}
RDPConnect(rdpIP, size.Width, size.Height);
@ -230,9 +274,10 @@ namespace XenAdmin.ConsoleView
{
if (Connected)
{
if (rdpClient == null)
return;
rdpClient.Disconnect();
if (rdpClient9 == null)
rdpClient6.Disconnect();
else
rdpClient9.Disconnect();
}
}
catch(InvalidComObjectException ex)
@ -258,7 +303,7 @@ namespace XenAdmin.ConsoleView
{
bool containsFocus = parent.ParentForm != null && parent.ParentForm.ContainsFocus;
if (rdpClient == null || !containsFocus)
if (rdpControl == null || !containsFocus)
return;
if (KeyHandler.handleExtras<int>(pressed, pressedScans, KeyHandler.ExtraScans, scancode, KeyHandler.ModifierScans, ref modifierKeyPressedAlone))
@ -292,16 +337,16 @@ namespace XenAdmin.ConsoleView
public Control ConsoleControl
{
get { return rdpClient; }
get { return rdpControl; }
}
public void Activate()
{
Program.MainWindow.MenuShortcuts = false;
if (rdpClient != null)
if (rdpControl != null)
{
if (!rdpClient.Focused)
rdpClient.Select();
if (!rdpControl.Focused)
rdpControl.Select();
InterceptKeys.releaseKeys();
InterceptKeys.grabKeys(new InterceptKeys.KeyEvent(handleRDPKey), true);
@ -340,7 +385,7 @@ namespace XenAdmin.ConsoleView
{
if(disposing)
{
if (rdpClient != null)
if (rdpControl != null)
{
// We need to dispose the rdp control. However, doing it immediately (in the control's own
// OnDisconnected event) will cause a horrible crash. Instead, start a timer that will
@ -351,7 +396,7 @@ namespace XenAdmin.ConsoleView
try
{
Log.Debug("RdpClient Dispose(): rdpControl.Dispose() in delegate");
rdpClient.Dispose();
rdpControl.Dispose();
}
catch (Exception)
{
@ -369,7 +414,7 @@ namespace XenAdmin.ConsoleView
else
Log.Debug("RdpClient Dispose(): rdpControl == null");
}
rdpClient = null;
rdpControl = null;
Log.Debug("RdpClient Dispose(): disposed = true");
disposed = true;
}
@ -410,7 +455,7 @@ namespace XenAdmin.ConsoleView
public Size DesktopSize
{
get { return rdpClient != null ? new Size(DesktopWidth, DesktopHeight) /*rdpControl.Size*/ : Size.Empty; }
get { return rdpControl != null ? new Size(DesktopWidth, DesktopHeight) /*rdpControl.Size*/ : Size.Empty; }
set { }
}
@ -418,7 +463,7 @@ namespace XenAdmin.ConsoleView
{
get
{
return rdpClient != null ? new Rectangle(rdpClient.Location.X, rdpClient.Location.Y, DesktopWidth, DesktopHeight) : Rectangle.Empty;
return rdpControl != null ? new Rectangle(rdpControl.Location.X, rdpControl.Location.Y, DesktopWidth, DesktopHeight) : Rectangle.Empty;
}
}

View File

@ -50,6 +50,8 @@ namespace XenAdmin.ConsoleView
this.sendCAD = new System.Windows.Forms.Button();
this.contentPanel = new System.Windows.Forms.Panel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.labelGeneralInformationMessage = new System.Windows.Forms.Label();
this.pictureBoxGeneralInformationMessage = new System.Windows.Forms.PictureBox();
this.scaleCheckBox = new System.Windows.Forms.CheckBox();
this.fullscreenButton = new System.Windows.Forms.Button();
this.dockButton = new System.Windows.Forms.Button();
@ -65,6 +67,7 @@ namespace XenAdmin.ConsoleView
this.multipleDvdIsoList1 = new XenAdmin.Controls.MultipleDvdIsoList();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxGeneralInformationMessage)).BeginInit();
this.gradientPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
@ -85,12 +88,27 @@ namespace XenAdmin.ConsoleView
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.labelGeneralInformationMessage, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.pictureBoxGeneralInformationMessage, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.sendCAD, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.scaleCheckBox, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.fullscreenButton, 4, 0);
this.tableLayoutPanel1.Controls.Add(this.dockButton, 3, 0);
this.tableLayoutPanel1.Controls.Add(this.scaleCheckBox, 3, 0);
this.tableLayoutPanel1.Controls.Add(this.fullscreenButton, 5, 0);
this.tableLayoutPanel1.Controls.Add(this.dockButton, 4, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// labelGeneralInformationMessage
//
resources.ApplyResources(this.labelGeneralInformationMessage, "labelGeneralInformationMessage");
this.labelGeneralInformationMessage.AutoEllipsis = true;
this.labelGeneralInformationMessage.Name = "labelGeneralInformationMessage";
//
// pictureBoxGeneralInformationMessage
//
resources.ApplyResources(this.pictureBoxGeneralInformationMessage, "pictureBoxGeneralInformationMessage");
this.pictureBoxGeneralInformationMessage.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16;
this.pictureBoxGeneralInformationMessage.Name = "pictureBoxGeneralInformationMessage";
this.pictureBoxGeneralInformationMessage.TabStop = false;
//
// scaleCheckBox
//
resources.ApplyResources(this.scaleCheckBox, "scaleCheckBox");
@ -215,6 +233,7 @@ namespace XenAdmin.ConsoleView
this.Name = "VNCTabView";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxGeneralInformationMessage)).EndInit();
this.gradientPanel1.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
@ -243,5 +262,7 @@ namespace XenAdmin.ConsoleView
private System.Windows.Forms.Label powerStateLabel;
private System.Windows.Forms.Label dedicatedGpuWarning;
private System.Windows.Forms.Button buttonSSH;
private System.Windows.Forms.PictureBox pictureBoxGeneralInformationMessage;
private System.Windows.Forms.Label labelGeneralInformationMessage;
}
}

View File

@ -95,6 +95,9 @@ namespace XenAdmin.ConsoleView
InitializeComponent();
var tooltipForGeneralInformationMessage = new ToolTip();
tooltipForGeneralInformationMessage.SetToolTip(labelGeneralInformationMessage, labelGeneralInformationMessage.Text);
HostLabel.Font = Program.HeaderGradientFont;
HostLabel.ForeColor = Program.HeaderGradientForeColor;
multipleDvdIsoList1.LabelSingleDvdForeColor = Program.HeaderGradientForeColor;
@ -212,6 +215,11 @@ namespace XenAdmin.ConsoleView
vncScreen.AutoSwitchRDPLater = true;
}
void ShowOrHideRdpVersionWarning()
{
pictureBoxGeneralInformationMessage.Visible = labelGeneralInformationMessage.Visible = vncScreen.RdpVersionWarningNeeded;
}
public bool IsScaled
{
get { return scaleCheckBox.Checked; }
@ -1229,6 +1237,8 @@ namespace XenAdmin.ConsoleView
}
ignoreScaleChange = false;
scaleCheckBox_CheckedChanged(null, null); // make sure scale setting is now correct: CA-84324
ShowOrHideRdpVersionWarning();
}
private void UpdateTooltipOfToogleButton()

View File

@ -154,7 +154,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;sendCAD.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="contentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -187,8 +187,89 @@
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelGeneralInformationMessage.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelGeneralInformationMessage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelGeneralInformationMessage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelGeneralInformationMessage.Location" type="System.Drawing.Point, System.Drawing">
<value>223, 4</value>
</data>
<data name="labelGeneralInformationMessage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 3, 0</value>
</data>
<data name="labelGeneralInformationMessage.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 30</value>
</data>
<data name="labelGeneralInformationMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>207, 26</value>
</data>
<data name="labelGeneralInformationMessage.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelGeneralInformationMessage.Text" xml:space="preserve">
<value>以前のバージョンの RDP クライアントが見つかりました。アップデートをお勧めします。</value>
</data>
<data name="labelGeneralInformationMessage.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>BottomLeft</value>
</data>
<data name="labelGeneralInformationMessage.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.Name" xml:space="preserve">
<value>labelGeneralInformationMessage</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.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;labelGeneralInformationMessage.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pictureBoxGeneralInformationMessage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Location" type="System.Drawing.Point, System.Drawing">
<value>201, 0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 34</value>
</data>
<data name="pictureBoxGeneralInformationMessage.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxGeneralInformationMessage.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.Name" xml:space="preserve">
<value>pictureBoxGeneralInformationMessage</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.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;pictureBoxGeneralInformationMessage.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="scaleCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
@ -223,7 +304,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;scaleCheckBox.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="fullscreenButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -259,7 +340,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;fullscreenButton.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="dockButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -307,7 +388,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;dockButton.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
@ -343,50 +424,11 @@
<value>5</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="sendCAD" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="scaleCheckBox" Row="0" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="fullscreenButton" Row="0" RowSpan="1" Column="4" ColumnSpan="1" />&lt;Control Name="dockButton" Row="0" RowSpan="1" Column="3" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,16" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="labelGeneralInformationMessage" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="pictureBoxGeneralInformationMessage" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="sendCAD" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="scaleCheckBox" Row="0" RowSpan="1" Column="3" ColumnSpan="1" />&lt;Control Name="fullscreenButton" Row="0" RowSpan="1" Column="5" ColumnSpan="1" />&lt;Control Name="dockButton" Row="0" RowSpan="1" Column="4" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Absolute,22,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
</data>
<metadata name="tip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="toggleConsoleButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="toggleConsoleButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="toggleConsoleButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="toggleConsoleButton.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 6</value>
</data>
<data name="toggleConsoleButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 6, 6</value>
</data>
<data name="toggleConsoleButton.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 24</value>
</data>
<data name="toggleConsoleButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="toggleConsoleButton.Text" xml:space="preserve">
<value>ゲスト コンソールの検索中...</value>
</data>
<data name="toggleConsoleButton.ToolTip" xml:space="preserve">
<value>このゲストではリモート アクセスが有効になっていません</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.Name" xml:space="preserve">
<value>toggleConsoleButton</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.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;toggleConsoleButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="LifeCycleMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>81, 17</value>
</metadata>
@ -549,6 +591,45 @@
<data name="&gt;&gt;buttonSSH.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="toggleConsoleButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="toggleConsoleButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="toggleConsoleButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="toggleConsoleButton.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 6</value>
</data>
<data name="toggleConsoleButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 6, 6</value>
</data>
<data name="toggleConsoleButton.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 24</value>
</data>
<data name="toggleConsoleButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="toggleConsoleButton.Text" xml:space="preserve">
<value>ゲスト コンソールの検索中...</value>
</data>
<data name="toggleConsoleButton.ToolTip" xml:space="preserve">
<value>このゲストではリモート アクセスが有効になっていません</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.Name" xml:space="preserve">
<value>toggleConsoleButton</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.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;toggleConsoleButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="multipleDvdIsoList1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>

View File

@ -136,7 +136,7 @@
<value>123, 30</value>
</data>
<data name="sendCAD.Size" type="System.Drawing.Size, System.Drawing">
<value>209, 30</value>
<value>197, 30</value>
</data>
<data name="sendCAD.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@ -154,7 +154,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;sendCAD.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="contentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -187,8 +187,89 @@
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelGeneralInformationMessage.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelGeneralInformationMessage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelGeneralInformationMessage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelGeneralInformationMessage.Location" type="System.Drawing.Point, System.Drawing">
<value>223, 4</value>
</data>
<data name="labelGeneralInformationMessage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 3, 0</value>
</data>
<data name="labelGeneralInformationMessage.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 30</value>
</data>
<data name="labelGeneralInformationMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>207, 26</value>
</data>
<data name="labelGeneralInformationMessage.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelGeneralInformationMessage.Text" xml:space="preserve">
<value>Your RDP client is outdated. For better experience, please update it.</value>
</data>
<data name="labelGeneralInformationMessage.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>BottomLeft</value>
</data>
<data name="labelGeneralInformationMessage.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.Name" xml:space="preserve">
<value>labelGeneralInformationMessage</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.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;labelGeneralInformationMessage.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pictureBoxGeneralInformationMessage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Location" type="System.Drawing.Point, System.Drawing">
<value>201, 0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 34</value>
</data>
<data name="pictureBoxGeneralInformationMessage.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxGeneralInformationMessage.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.Name" xml:space="preserve">
<value>pictureBoxGeneralInformationMessage</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.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;pictureBoxGeneralInformationMessage.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="scaleCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
@ -199,7 +280,7 @@
<value>NoControl</value>
</data>
<data name="scaleCheckBox.Location" type="System.Drawing.Point, System.Drawing">
<value>433, 8</value>
<value>438, 8</value>
</data>
<data name="scaleCheckBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
@ -223,7 +304,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;scaleCheckBox.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="fullscreenButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -232,7 +313,7 @@
<value>NoControl</value>
</data>
<data name="fullscreenButton.Location" type="System.Drawing.Point, System.Drawing">
<value>578, 2</value>
<value>583, 2</value>
</data>
<data name="fullscreenButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
@ -241,7 +322,7 @@
<value>114, 30</value>
</data>
<data name="fullscreenButton.Size" type="System.Drawing.Size, System.Drawing">
<value>123, 30</value>
<value>118, 30</value>
</data>
<data name="fullscreenButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -259,7 +340,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;fullscreenButton.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="dockButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -274,7 +355,7 @@
<value>NoControl</value>
</data>
<data name="dockButton.Location" type="System.Drawing.Point, System.Drawing">
<value>489, 2</value>
<value>494, 2</value>
</data>
<data name="dockButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>2, 2, 2, 2</value>
@ -307,7 +388,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;dockButton.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
@ -343,50 +424,11 @@
<value>5</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="sendCAD" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="scaleCheckBox" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="fullscreenButton" Row="0" RowSpan="1" Column="4" ColumnSpan="1" /&gt;&lt;Control Name="dockButton" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,16" /&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="labelGeneralInformationMessage" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="pictureBoxGeneralInformationMessage" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="sendCAD" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="scaleCheckBox" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="fullscreenButton" Row="0" RowSpan="1" Column="5" ColumnSpan="1" /&gt;&lt;Control Name="dockButton" Row="0" RowSpan="1" Column="4" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Absolute,22,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="tip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="toggleConsoleButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="toggleConsoleButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="toggleConsoleButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="toggleConsoleButton.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 6</value>
</data>
<data name="toggleConsoleButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 6, 6</value>
</data>
<data name="toggleConsoleButton.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 24</value>
</data>
<data name="toggleConsoleButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="toggleConsoleButton.Text" xml:space="preserve">
<value>Looking for guest console...</value>
</data>
<data name="toggleConsoleButton.ToolTip" xml:space="preserve">
<value>Remote access is not enabled on this guest</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.Name" xml:space="preserve">
<value>toggleConsoleButton</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.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;toggleConsoleButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="LifeCycleMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>81, 17</value>
</metadata>
@ -549,6 +591,45 @@
<data name="&gt;&gt;buttonSSH.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="toggleConsoleButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="toggleConsoleButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="toggleConsoleButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="toggleConsoleButton.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 6</value>
</data>
<data name="toggleConsoleButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 6, 6</value>
</data>
<data name="toggleConsoleButton.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 24</value>
</data>
<data name="toggleConsoleButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="toggleConsoleButton.Text" xml:space="preserve">
<value>Looking for guest console...</value>
</data>
<data name="toggleConsoleButton.ToolTip" xml:space="preserve">
<value>Remote access is not enabled on this guest</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.Name" xml:space="preserve">
<value>toggleConsoleButton</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.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;toggleConsoleButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="multipleDvdIsoList1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@ -649,7 +730,7 @@
<value>0</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="HostLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="buttonSSH" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="toggleConsoleButton" Row="0" RowSpan="1" Column="5" ColumnSpan="1" /&gt;&lt;Control Name="multipleDvdIsoList1" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="pictureBox1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="Percent,100,Absolute,37" /&gt;&lt;/TableLayoutSettings&gt;</value>
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="HostLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="buttonSSH" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="toggleConsoleButton" Row="0" RowSpan="1" Column="5" ColumnSpan="1" /&gt;&lt;Control Name="multipleDvdIsoList1" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="pictureBox1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="Percent,100,Absolute,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="gradientPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>

View File

@ -154,7 +154,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;sendCAD.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="contentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -187,8 +187,89 @@
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelGeneralInformationMessage.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelGeneralInformationMessage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelGeneralInformationMessage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelGeneralInformationMessage.Location" type="System.Drawing.Point, System.Drawing">
<value>223, 4</value>
</data>
<data name="labelGeneralInformationMessage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 3, 0</value>
</data>
<data name="labelGeneralInformationMessage.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 30</value>
</data>
<data name="labelGeneralInformationMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>207, 26</value>
</data>
<data name="labelGeneralInformationMessage.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelGeneralInformationMessage.Text" xml:space="preserve">
<value>您 RDP 客户端已过时。为了获得更好的体验,请更新该客户端。</value>
</data>
<data name="labelGeneralInformationMessage.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>BottomLeft</value>
</data>
<data name="labelGeneralInformationMessage.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.Name" xml:space="preserve">
<value>labelGeneralInformationMessage</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.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;labelGeneralInformationMessage.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelGeneralInformationMessage.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="pictureBoxGeneralInformationMessage.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Location" type="System.Drawing.Point, System.Drawing">
<value>201, 0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 34</value>
</data>
<data name="pictureBoxGeneralInformationMessage.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxGeneralInformationMessage.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="pictureBoxGeneralInformationMessage.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.Name" xml:space="preserve">
<value>pictureBoxGeneralInformationMessage</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.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;pictureBoxGeneralInformationMessage.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBoxGeneralInformationMessage.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="scaleCheckBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
@ -223,7 +304,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;scaleCheckBox.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="fullscreenButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -259,7 +340,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;fullscreenButton.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="dockButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -307,7 +388,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;dockButton.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
@ -343,50 +424,11 @@
<value>5</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="sendCAD" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="scaleCheckBox" Row="0" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="fullscreenButton" Row="0" RowSpan="1" Column="4" ColumnSpan="1" />&lt;Control Name="dockButton" Row="0" RowSpan="1" Column="3" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,16" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="labelGeneralInformationMessage" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="pictureBoxGeneralInformationMessage" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="sendCAD" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="scaleCheckBox" Row="0" RowSpan="1" Column="3" ColumnSpan="1" />&lt;Control Name="fullscreenButton" Row="0" RowSpan="1" Column="5" ColumnSpan="1" />&lt;Control Name="dockButton" Row="0" RowSpan="1" Column="4" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Absolute,22,Percent,100,AutoSize,0,AutoSize,0,AutoSize,0" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
</data>
<metadata name="tip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="toggleConsoleButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="toggleConsoleButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="toggleConsoleButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="toggleConsoleButton.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 6</value>
</data>
<data name="toggleConsoleButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 6, 6</value>
</data>
<data name="toggleConsoleButton.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 24</value>
</data>
<data name="toggleConsoleButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="toggleConsoleButton.Text" xml:space="preserve">
<value>正在查找来宾控制台...</value>
</data>
<data name="toggleConsoleButton.ToolTip" xml:space="preserve">
<value>此来宾未启用远程访问</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.Name" xml:space="preserve">
<value>toggleConsoleButton</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.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;toggleConsoleButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<metadata name="LifeCycleMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>81, 17</value>
</metadata>
@ -549,6 +591,45 @@
<data name="&gt;&gt;buttonSSH.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="toggleConsoleButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="toggleConsoleButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="toggleConsoleButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="toggleConsoleButton.Location" type="System.Drawing.Point, System.Drawing">
<value>522, 6</value>
</data>
<data name="toggleConsoleButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 6, 6, 6</value>
</data>
<data name="toggleConsoleButton.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 24</value>
</data>
<data name="toggleConsoleButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="toggleConsoleButton.Text" xml:space="preserve">
<value>正在查找来宾控制台...</value>
</data>
<data name="toggleConsoleButton.ToolTip" xml:space="preserve">
<value>此来宾未启用远程访问</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.Name" xml:space="preserve">
<value>toggleConsoleButton</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.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;toggleConsoleButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;toggleConsoleButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="multipleDvdIsoList1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>

View File

@ -117,6 +117,8 @@ namespace XenAdmin.ConsoleView
public event Action<bool> GpuStatusChanged;
public event Action<string> ConnectionNameChanged;
public bool RdpVersionWarningNeeded { get { return rdpClient != null && rdpClient.needsRdpVersionWarning; }}
internal readonly VNCTabView parentVNCTabView;
[DefaultValue(false)]

View File

@ -41,7 +41,7 @@ using XenAPI;
namespace XenAdmin.Controls.DataGridViewEx
{
public partial class CollapsingPoolHostDataGridView : DataGridViewEx
public abstract partial class CollapsingPoolHostDataGridView : DataGridViewEx
{
public event EventHandler CheckBoxClicked;
@ -91,10 +91,9 @@ namespace XenAdmin.Controls.DataGridViewEx
{}
/// <summary>
/// Hook in order that sorting may be added for additional columns rather than those
/// provided by the base class
/// Subclass needs to implement the sorter
/// </summary>
protected virtual void SortAdditionalColumns() { }
protected abstract void SortColumns();
/// <summary>
/// Sort the rows but then remove and read the rows that should be expandable to be placed back under
@ -169,12 +168,7 @@ namespace XenAdmin.Controls.DataGridViewEx
DetermineSortDirection(e);
if (columnToBeSortedIndex == firstRow.NameCellIndex)
{
SortAndRebuildTree(new CollapsingPoolHostDataGridViewRowDefaultSorter(direction));
}
SortAdditionalColumns();
SortColumns();
Columns[columnToBeSortedIndex].HeaderCell.SortGlyphDirection =
direction == ListSortDirection.Ascending

View File

@ -41,14 +41,9 @@ namespace XenAdmin.Controls.DataGridViewEx
{
public class CollapsingPoolHostDataGridViewRow : DataGridViewExRow
{
protected class DataGridViewExNameCell : DataGridViewTextBoxCell
{
}
protected DataGridViewImageCell _expansionCell;
protected DataGridViewCheckBoxCell _poolCheckBoxCell;
protected DataGridViewExNameCell _nameCell;
protected DataGridViewTextBoxCell _nameCell;
protected bool _hasPool;
protected CollapsingPoolHostDataGridViewRow()
@ -98,6 +93,11 @@ namespace XenAdmin.Controls.DataGridViewEx
get { return Tag is Host; }
}
public bool IsPoolOrStandaloneHost
{
get { return IsAPoolRow || (IsAHostRow && !HasPool); }
}
/// <summary>
/// Get the underlying pool if a pool row otherwise returns null
/// </summary>
@ -125,13 +125,17 @@ namespace XenAdmin.Controls.DataGridViewEx
public void SetCollapseIcon()
{
_expansionCell.Value = Resources.tree_minus;
IsACollapsedRow = false;
}
public void SetExpandIcon()
{
_expansionCell.Value = Resources.tree_plus;
IsACollapsedRow = true;
}
public bool IsACollapsedRow { get; protected set; }
/// <summary>
/// Convert row to a standalone host row
/// </summary>

View File

@ -64,6 +64,11 @@ namespace XenAdmin.Controls.DataGridViewEx
this.direction = direction;
}
protected ListSortDirection Direction
{
get { return direction; }
}
/// <summary>
/// Interface member correcting the sort for the direction required
/// </summary>

View File

@ -45,12 +45,14 @@ namespace XenAdmin.Controls.DataGridViewEx
/// T is the sort of Row used which is a decendent of CollapsingPoolHostDataGridViewRow
/// </summary>
/// <note>Base class takes care of the bi-direction behaviour</note>
public abstract class CollapsingPoolHostDataGridViewRowStableSorter<T> : CollapsingPoolHostDataGridViewRowSorter where T : PoolHostDataGridViewOneCheckboxRow
public abstract class CollapsingPoolHostDataGridViewRowStableSorter<T> : CollapsingPoolHostDataGridViewRowSorter where T : CollapsingPoolHostDataGridViewRow
{
private IComparer stableSorter = new CollapsingPoolHostDataGridViewRowDefaultSorter();
protected CollapsingPoolHostDataGridViewRowStableSorter(){}
protected CollapsingPoolHostDataGridViewRowStableSorter(ListSortDirection direction) : base(direction) { }
private IComparer stableSorter = new CollapsingPoolHostDataGridViewRowDefaultSorter();
/// <summary>
/// Use this IComparer to sort any values where the implementations sorter
/// comes back with a zero i.e. the objects are the same
@ -60,8 +62,6 @@ namespace XenAdmin.Controls.DataGridViewEx
set { stableSorter = value; }
}
protected CollapsingPoolHostDataGridViewRowStableSorter(ListSortDirection direction) : base(direction) { }
protected override int PerformSort()
{
T rowLhs = Lhs as T;

View File

@ -0,0 +1,75 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XenAdmin.Core;
namespace XenAdmin.Controls.DataGridViewEx
{
/// <summary>
/// A class implementation to do sorting of CollapsingPoolHostDataGridViewRow derived types based on the input column index and direction
public class CollapsingPoolHostRowSorter<T> : CollapsingPoolHostDataGridViewRowStableSorter<T> where T : CollapsingPoolHostDataGridViewRow
{
private int columnClicked;
public CollapsingPoolHostRowSorter(ListSortDirection direction, int columnClicked)
: base(direction)
{
this.columnClicked = columnClicked;
// In case of same string, default sorting should be still in order under Descending direction
StableSorter = new CollapsingPoolHostDataGridViewRowDefaultSorter(Direction);
}
protected override int SortRowByColumnDetails(T leftSide, T rightSide)
{
if (leftSide.IsPoolOrStandaloneHost && !rightSide.IsPoolOrStandaloneHost)
return -1;
if (!leftSide.IsPoolOrStandaloneHost && rightSide.IsPoolOrStandaloneHost)
return 1;
if ((leftSide.IsPoolOrStandaloneHost && rightSide.IsPoolOrStandaloneHost) ||
(!leftSide.IsPoolOrStandaloneHost && !rightSide.IsPoolOrStandaloneHost))
{
return StringUtility.NaturalCompare(leftSide.Cells[columnClicked].Value.ToString(),
rightSide.Cells[columnClicked].Value.ToString());
}
return 0;
}
}
}

View File

@ -43,7 +43,7 @@ using System.Collections;
namespace XenAdmin.Controls.DataGridViewEx
{
[ToolboxBitmap(typeof(DataGridView))]
public partial class PoolHostDataGridViewOneCheckbox : CollapsingPoolHostDataGridView
public abstract partial class PoolHostDataGridViewOneCheckbox : CollapsingPoolHostDataGridView
{
public PoolHostDataGridViewOneCheckbox()
{

View File

@ -51,38 +51,39 @@ namespace XenAdmin.Controls.DataGridViewEx
/// </summary>
public abstract class PoolHostDataGridViewOneCheckboxRow : CollapsingPoolHostDataGridViewRow
{
private class DataGridViewNameCell : DataGridViewExNameCell
private class DataGridViewNameCell : DataGridViewTextBoxCell
{
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates cellState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
PoolHostDataGridViewOneCheckboxRow row = (PoolHostDataGridViewOneCheckboxRow)this.OwningRow;
Host host = value as Host;
if (host != null)
if (value is Host || value is Pool)
{
Image hostIcon = Images.GetImage16For(host);
Image hostIcon = Images.GetImage16For(value as IXenObject);
var iconIndent = row.IsCheckable ? 0 : 16;
var textIndent = iconIndent + 16;
base.Paint(graphics, clipBounds,
new Rectangle(cellBounds.X + 16, cellBounds.Y, cellBounds.Width - 16,
new Rectangle(cellBounds.X + textIndent, cellBounds.Y, cellBounds.Width - textIndent,
cellBounds.Height), rowIndex, cellState, value, formattedValue,
errorText, cellStyle, advancedBorderStyle, paintParts);
if ((cellState & DataGridViewElementStates.Selected) != 0 && row.Enabled )
{
using (var brush = new SolidBrush(DataGridView.DefaultCellStyle.SelectionBackColor))
graphics.FillRectangle(
brush, cellBounds.X, cellBounds.Y, hostIcon.Width, cellBounds.Height);
brush, cellBounds.X, cellBounds.Y, hostIcon.Width + iconIndent, cellBounds.Height);
}
else
{
//Background behind the host icon
using (var brush = new SolidBrush(this.DataGridView.DefaultCellStyle.BackColor))
graphics.FillRectangle(brush,
cellBounds.X, cellBounds.Y, hostIcon.Width, cellBounds.Height);
cellBounds.X, cellBounds.Y, hostIcon.Width + iconIndent, cellBounds.Height);
}
if (row.Enabled)
graphics.DrawImage(hostIcon, cellBounds.X, cellBounds.Y + 3, hostIcon.Width, hostIcon.Height);
graphics.DrawImage(hostIcon, cellBounds.X + iconIndent, cellBounds.Y + 3, hostIcon.Width, hostIcon.Height);
else
graphics.DrawImage(hostIcon,
new Rectangle(cellBounds.X, cellBounds.Y + 3, hostIcon.Width, hostIcon.Height),
new Rectangle(cellBounds.X + iconIndent, cellBounds.Y + 3, hostIcon.Width, hostIcon.Height),
0, 0, hostIcon.Width, hostIcon.Height, GraphicsUnit.Pixel,
Drawing.GreyScaleAttributes);
}

View File

@ -141,5 +141,10 @@ namespace XenAdmin.Controls
if (FilterChanged != null)
FilterChanged();
}
public void ResetFilterDates()
{
DropDownItems[6].PerformClick();
}
}
}

View File

@ -179,6 +179,9 @@ namespace XenAdmin.Controls
while (!exitNtolUpdateThread)
{
waitingNtolUpdate.WaitOne();
log.Debug("Thread woken");
Program.Invoke(this, () =>
{
// Don't do GUI stuff if we've been told to exit
@ -236,9 +239,6 @@ namespace XenAdmin.Controls
LoadCalculationFailedMode();
});
}
waitingNtolUpdate.WaitOne();
log.Debug("Thread woken");
}
log.Debug("Thread exiting");
@ -253,6 +253,7 @@ namespace XenAdmin.Controls
internal void StartNtolUpdate()
{
StopNtolUpdate();
waitingNtolUpdate.Set();
ntolUpdateThread = new Thread(updateNtol);
ntolUpdateThread.IsBackground = true;
ntolUpdateThread.Name = "Ntol updating thread for pool " + Helpers.GetName(connection);

View File

@ -523,35 +523,6 @@ namespace XenAdmin.Core
return dayOfWeek.ToString();
}
/// <summary>
/// The expiry date of a host's license
/// </summary>
/// <param name="referenceDate">Should be UTC!</param>
public static string HostLicenseExpiryString(Host h, bool longFormat, DateTime referenceDate)
{
if (h.license_params != null && h.license_params.ContainsKey("expiry"))
{
var licenceExpiryUtc = h.LicenseExpiryUTC();
TimeSpan timeDiff = licenceExpiryUtc.Subtract(referenceDate);
if (!LicenseStatus.IsInfinite(timeDiff))
{
var expiryString = "";
Program.Invoke(Program.MainWindow, delegate
{
expiryString = DateTimeToString(licenceExpiryUtc.ToLocalTime(),
longFormat ? Messages.DATEFORMAT_DMY_LONG : Messages.DATEFORMAT_DMY, true);
});
return expiryString;
}
return Messages.LICENSE_NEVER;
}
return Messages.GENERAL_UNKNOWN;
}
private const int WM_SETREDRAW = 11;
public static void SuspendDrawing(Control control)

View File

@ -305,13 +305,13 @@ namespace XenAdmin.Core
XenServerPatches = action.XenServerPatches;
}
var xenCenterAlert = NewXenCenterUpdateAlert(XenCenterVersions, Program.Version);
if (xenCenterAlert != null && !xenCenterAlert.IsDismissed())
updateAlerts.Add(xenCenterAlert);
var xenCenterAlerts = NewXenCenterUpdateAlerts(XenCenterVersions, Program.Version);
if (xenCenterAlerts != null)
updateAlerts.AddRange(xenCenterAlerts.Where(a=>!a.IsDismissed()));
var xenServerUpdateAlert = NewXenServerVersionAlert(XenServerVersionsForAutoCheck);
if (xenServerUpdateAlert != null && !xenServerUpdateAlert.CanIgnore)
updateAlerts.Add(xenServerUpdateAlert);
var xenServerUpdateAlerts = NewXenServerVersionAlerts(XenServerVersionsForAutoCheck);
if (xenServerUpdateAlerts != null)
updateAlerts.AddRange(xenServerUpdateAlerts.Where(a=>!a.CanIgnore));
var xenServerPatchAlerts = NewXenServerPatchAlerts(XenServerVersions, XenServerPatches);
if (xenServerPatchAlerts != null)
@ -354,33 +354,47 @@ namespace XenAdmin.Core
}
public static XenCenterUpdateAlert NewXenCenterUpdateAlert(List<XenCenterVersion> xenCenterVersions, Version currentProgramVersion)
public static List<XenCenterUpdateAlert> NewXenCenterUpdateAlerts(List<XenCenterVersion> xenCenterVersions,
Version currentProgramVersion)
{
if (Helpers.CommonCriteriaCertificationRelease)
return null;
XenCenterVersion toUse = null;
var alerts = new List<XenCenterUpdateAlert>();
XenCenterVersion latest = null, latestCr = null;
if (xenCenterVersions.Count != 0 && currentProgramVersion != new Version(0, 0, 0, 0))
{
var latest = from v in xenCenterVersions where v.IsLatest select v;
var latestVersions = from v in xenCenterVersions where v.Latest select v;
latest = latestVersions.FirstOrDefault(xcv => xcv.Lang == Program.CurrentLanguage) ??
latestVersions.FirstOrDefault(xcv => string.IsNullOrEmpty(xcv.Lang));
toUse = latest.FirstOrDefault(xcv => xcv.Lang == Program.CurrentLanguage) ??
latest.FirstOrDefault(xcv => string.IsNullOrEmpty(xcv.Lang));
if (IsSuitableForXenCenterAlert(latest, currentProgramVersion))
alerts.Add(new XenCenterUpdateAlert(latest));
var latestCrVersions = from v in xenCenterVersions where v.LatestCr select v;
latestCr = latestCrVersions.FirstOrDefault(xcv => xcv.Lang == Program.CurrentLanguage) ??
latestCrVersions.FirstOrDefault(xcv => string.IsNullOrEmpty(xcv.Lang));
if (latestCr != latest && IsSuitableForXenCenterAlert(latestCr, currentProgramVersion))
alerts.Add(new XenCenterUpdateAlert(latestCr));
}
if (toUse == null)
return null;
if (toUse.Version > currentProgramVersion ||
(toUse.Version == currentProgramVersion && toUse.Lang == Program.CurrentLanguage &&
!PropertyManager.IsCultureLoaded(Program.CurrentCulture)))
if (alerts.Count == 0)
{
return new XenCenterUpdateAlert(toUse);
log.Info(string.Format("Not alerting XenCenter update - latest = {0}, latestcr = {1}, detected = {2}",
latest != null ? latest.VersionAndLang : "", latestCr != null ? latestCr.VersionAndLang : "", Program.VersionAndLanguage));
}
log.Info(string.Format("Not alerting XenCenter update - lastest = {0}, detected = {1}",
toUse.VersionAndLang, Program.VersionAndLanguage));
return null;
return alerts;
}
private static bool IsSuitableForXenCenterAlert(XenCenterVersion toUse, Version currentProgramVersion)
{
if (toUse == null)
return false;
return toUse.Version > currentProgramVersion ||
(toUse.Version == currentProgramVersion && toUse.Lang == Program.CurrentLanguage &&
!PropertyManager.IsCultureLoaded(Program.CurrentCulture));
}
public static List<XenServerPatchAlert> NewXenServerPatchAlerts(List<XenServerVersion> xenServerVersions,
@ -391,6 +405,8 @@ namespace XenAdmin.Core
var alerts = new List<XenServerPatchAlert>();
var xenServerVersionsAsUpdates = xenServerVersions.Where(v => v.IsVersionAvailableAsAnUpdate);
foreach (IXenConnection xenConnection in ConnectionsManager.XenConnectionsCopy)
{
Host master = Helpers.GetMaster(xenConnection);
@ -399,15 +415,7 @@ namespace XenAdmin.Core
if (master == null || pool == null)
continue;
var serverVersions = xenServerVersions.FindAll(version =>
{
if (version.BuildNumber != string.Empty)
return (master.BuildNumberRaw() == version.BuildNumber);
return Helpers.HostProductVersionWithOEM(master) == version.VersionAndOEM
|| (version.Oem != null && Helpers.OEMName(master).StartsWith(version.Oem)
&& Helpers.HostProductVersion(master) == version.Version.ToString());
});
var serverVersions = GetServerVersions(master, xenServerVersions);
if (serverVersions.Count == 0)
continue;
@ -422,7 +430,9 @@ namespace XenAdmin.Core
foreach (XenServerPatch xenServerPatch in patches)
{
var alert = new XenServerPatchAlert(xenServerPatch);
XenServerVersion newServerVersion = xenServerVersionsAsUpdates.FirstOrDefault(newVersion => newVersion.PatchUuid.Equals(xenServerPatch.Uuid, StringComparison.OrdinalIgnoreCase));
var alert = new XenServerPatchAlert(xenServerPatch, newServerVersion);
var existingAlert = alerts.Find(al => al.Equals(alert));
if (existingAlert != null)
@ -435,46 +445,8 @@ namespace XenAdmin.Core
XenServerPatch serverPatch = xenServerPatch;
// A patch can be installed on a host if:
// 1. it is not already installed and
// 2. the host has all the required patches installed and
// 3. the host doesn't have any of the conflicting patches installed
var noPatchHosts = hosts.Where(host =>
{
bool elyOrGreater = Helpers.ElyOrGreater(host);
var appliedUpdates = host.AppliedUpdates();
var appliedPatches = host.AppliedPatches();
// 1. patch is not already installed
if (elyOrGreater && appliedUpdates.Any(update => string.Equals(update.uuid, serverPatch.Uuid, StringComparison.OrdinalIgnoreCase)))
return false;
else if (!elyOrGreater && appliedPatches.Any(patch => string.Equals(patch.uuid, serverPatch.Uuid, StringComparison.OrdinalIgnoreCase)))
return false;
// 2. the host has all the required patches installed
if (serverPatch.RequiredPatches != null && serverPatch.RequiredPatches.Count > 0 &&
!serverPatch.RequiredPatches
.All(requiredPatchUuid =>
elyOrGreater && appliedUpdates.Any(update => string.Equals(update.uuid, requiredPatchUuid, StringComparison.OrdinalIgnoreCase))
|| !elyOrGreater && appliedPatches.Any(patch => string.Equals(patch.uuid, requiredPatchUuid, StringComparison.OrdinalIgnoreCase))
)
)
return false;
// 3. the host doesn't have any of the conflicting patches installed
if (serverPatch.ConflictingPatches != null && serverPatch.ConflictingPatches.Count > 0 &&
serverPatch.ConflictingPatches
.Any(conflictingPatchUuid =>
elyOrGreater && appliedUpdates.Any(update => string.Equals(update.uuid, conflictingPatchUuid, StringComparison.OrdinalIgnoreCase))
|| !elyOrGreater && appliedPatches.Any(patch => string.Equals(patch.uuid, conflictingPatchUuid, StringComparison.OrdinalIgnoreCase))
)
)
return false;
return true;
});
var noPatchHosts = hosts.Where(host => PatchCanBeInstalledOnHost(serverPatch, host));
if (noPatchHosts.Count() == hosts.Count)
alert.IncludeConnection(xenConnection);
else
@ -485,6 +457,78 @@ namespace XenAdmin.Core
return alerts;
}
private static bool PatchCanBeInstalledOnHost(XenServerPatch serverPatch, Host host)
{
Debug.Assert(serverPatch != null);
Debug.Assert(host != null);
// A patch can be installed on a host if:
// 1. it is not already installed and
// 2. the host has all the required patches installed and
// 3. the host doesn't have any of the conflicting patches installed
bool elyOrGreater = Helpers.ElyOrGreater(host);
var appliedUpdates = host.AppliedUpdates();
var appliedPatches = host.AppliedPatches();
// 1. patch is not already installed
if (elyOrGreater && appliedUpdates.Any(update => string.Equals(update.uuid, serverPatch.Uuid, StringComparison.OrdinalIgnoreCase)))
return false;
if (!elyOrGreater && appliedPatches.Any(patch => string.Equals(patch.uuid, serverPatch.Uuid, StringComparison.OrdinalIgnoreCase)))
return false;
// 2. the host has all the required patches installed
if (serverPatch.RequiredPatches != null && serverPatch.RequiredPatches.Count > 0 &&
!serverPatch.RequiredPatches
.All(requiredPatchUuid =>
elyOrGreater && appliedUpdates.Any(update => string.Equals(update.uuid, requiredPatchUuid, StringComparison.OrdinalIgnoreCase))
|| !elyOrGreater && appliedPatches.Any(patch => string.Equals(patch.uuid, requiredPatchUuid, StringComparison.OrdinalIgnoreCase))
)
)
return false;
// 3. the host doesn't have any of the conflicting patches installed
if (serverPatch.ConflictingPatches != null && serverPatch.ConflictingPatches.Count > 0 &&
serverPatch.ConflictingPatches
.Any(conflictingPatchUuid =>
elyOrGreater && appliedUpdates.Any(update => string.Equals(update.uuid, conflictingPatchUuid, StringComparison.OrdinalIgnoreCase))
|| !elyOrGreater && appliedPatches.Any(patch => string.Equals(patch.uuid, conflictingPatchUuid, StringComparison.OrdinalIgnoreCase))
)
)
return false;
return true;
}
/// <summary>
/// Returns the latest XenCenter version or null, if the current version is the latest.
/// If a server version is provided, it returns the XenCenter version that is required to work with that server.
/// If no server version is provided it will return the latestCr XenCenter.
/// </summary>
/// <param name="serverVersion"></param>
/// <returns></returns>
public static XenCenterVersion GetRequiredXenCenterVersion(XenServerVersion serverVersion)
{
if (XenCenterVersions.Count == 0)
return null;
var currentProgramVersion = Program.Version;
if (currentProgramVersion == new Version(0, 0, 0, 0))
return null;
var latestVersions = from v in XenCenterVersions where v.Latest select v;
var latest = latestVersions.FirstOrDefault(xcv => xcv.Lang == Program.CurrentLanguage) ??
latestVersions.FirstOrDefault(xcv => string.IsNullOrEmpty(xcv.Lang));
var latestCrVersions = from v in XenCenterVersions where v.LatestCr select v;
var latestCr = latestCrVersions.FirstOrDefault(xcv => xcv.Lang == Program.CurrentLanguage) ??
latestCrVersions.FirstOrDefault(xcv => string.IsNullOrEmpty(xcv.Lang));
if (serverVersion != null && serverVersion.Latest && latest != null)
return latest.Version > currentProgramVersion ? latest : null;
return latestCr != null && latestCr.Version > currentProgramVersion ? latestCr : null;
}
/// <summary>
/// This method returns the minimal set of patches for a host if this class already has information about them. Otherwise it returns empty list.
@ -497,24 +541,16 @@ namespace XenAdmin.Core
var recommendedPatches = new List<XenServerPatch>();
if (XenServerVersions == null)
return recommendedPatches;
return null;
var serverVersions = XenServerVersions.FindAll(version =>
{
if (version.BuildNumber != string.Empty)
return (host.BuildNumberRaw() == version.BuildNumber);
return Helpers.HostProductVersionWithOEM(host) == version.VersionAndOEM
|| (version.Oem != null && Helpers.OEMName(host).StartsWith(version.Oem)
&& Helpers.HostProductVersion(host) == version.Version.ToString());
});
var serverVersions = GetServerVersions(host, XenServerVersions);
if (serverVersions.Count != 0)
{
var minimumPatches = serverVersions[0].MinimalPatches;
if (minimumPatches == null) //unknown
return recommendedPatches;
return null;
bool elyOrGreater = Helpers.ElyOrGreater(host);
@ -545,14 +581,27 @@ namespace XenAdmin.Core
return null;
var version = GetCommonServerVersionOfHostsInAConnection(conn, XenServerVersions);
if (version != null)
{
if (version.MinimalPatches == null)
return null;
var uSeq = new UpgradeSequence();
uSeq.MinimalPatches = version.MinimalPatches;
uSeq.MinimalPatches = new List<XenServerPatch>(version.MinimalPatches);
// if there is a "new version" update in the update sequence, also add the minimal patches of this new version
if (uSeq.MinimalPatches.Count > 0)
{
// assuming that the new version update (if there is one) is the last one in the minimal patches list
var lastUpdate = uSeq.MinimalPatches[uSeq.MinimalPatches.Count - 1];
var newServerVersion = XenServerVersions.FirstOrDefault(
v => v.IsVersionAvailableAsAnUpdate && v.PatchUuid.Equals(lastUpdate.Uuid, StringComparison.OrdinalIgnoreCase));
if (newServerVersion != null && newServerVersion.MinimalPatches != null)
uSeq.MinimalPatches.AddRange(newServerVersion.MinimalPatches);
}
List<Host> hosts = conn.Cache.Hosts.ToList();
@ -569,6 +618,52 @@ namespace XenAdmin.Core
}
}
/// <summary>
/// Gets an upgrade sequence that contains a version upgrade, optionally followed by the minimal patches for the new version
/// </summary>
/// <param name="conn">Connection for the pool</param>
/// <param name="alert">The alert that refers the version-update</param>
/// <param name="updateTheNewVersion">Also add the minimum patches for the new version (true) or not (false).</param>
/// <returns></returns>
public static UpgradeSequence GetUpgradeSequence(IXenConnection conn, XenServerPatchAlert alert, bool updateTheNewVersion)
{
Debug.Assert(conn != null);
Debug.Assert(alert != null);
var uSeq = new UpgradeSequence();
if (XenServerVersions == null)
return null;
Host master = Helpers.GetMaster(conn);
if (master == null)
return null;
var version = GetCommonServerVersionOfHostsInAConnection(conn, XenServerVersions);
// the pool has to be homogeneous
if (version != null)
{
uSeq.MinimalPatches = new List<XenServerPatch>();
uSeq.MinimalPatches.Add(alert.Patch);
// if it's a version updgrade the min sequence will be this patch (the upgrade) and the min patches for the new version
if (updateTheNewVersion && alert.NewServerVersion != null && alert.NewServerVersion.MinimalPatches != null)
{
uSeq.MinimalPatches.AddRange(alert.NewServerVersion.MinimalPatches);
}
conn.Cache.Hosts.ToList().ForEach(h =>
uSeq[h] = GetUpgradeSequenceForHost(h, uSeq.MinimalPatches)
);
return uSeq;
}
return null;
}
/// <summary>
/// Returns a XenServerVersion if all hosts of the pool have the same version
/// Returns null if it is unknown or they don't match
@ -585,15 +680,7 @@ namespace XenAdmin.Core
foreach (Host host in hosts)
{
var hostVersions = xsVersions.FindAll(version =>
{
if (version.BuildNumber != string.Empty)
return (host.BuildNumberRaw() == version.BuildNumber);
return Helpers.HostProductVersionWithOEM(host) == version.VersionAndOEM
|| (version.Oem != null && Helpers.OEMName(host).StartsWith(version.Oem)
&& Helpers.HostProductVersion(host) == version.Version.ToString());
});
var hostVersions = GetServerVersions(host, xsVersions);
var foundVersion = hostVersions.FirstOrDefault();
@ -726,16 +813,31 @@ namespace XenAdmin.Core
}
}
public static XenServerVersionAlert NewXenServerVersionAlert(List<XenServerVersion> xenServerVersions)
public static List<XenServerVersionAlert> NewXenServerVersionAlerts(List<XenServerVersion> xenServerVersions)
{
if (Helpers.CommonCriteriaCertificationRelease)
return null;
var latestVersion = xenServerVersions.FindAll(item => item.Latest).OrderByDescending(v => v.Version).FirstOrDefault();
if (latestVersion == null)
return null;
var latestCrVersion = xenServerVersions.FindAll(item => item.LatestCr).OrderByDescending(v => v.Version).FirstOrDefault();
var alert = new XenServerVersionAlert(latestVersion);
List<XenServerVersionAlert> alerts = new List<XenServerVersionAlert>();
if (latestVersion != null)
alerts.Add(CreateAlertForXenServerVersion(latestVersion));
if (latestCrVersion != null && latestCrVersion != latestVersion)
alerts.Add(CreateAlertForXenServerVersion(latestCrVersion));
return alerts;
}
private static XenServerVersionAlert CreateAlertForXenServerVersion(XenServerVersion version)
{
var alert = new XenServerVersionAlert(version);
// the patch that installs this version, if any
var patch = XenServerPatches.FirstOrDefault(p => p.Uuid.Equals(version.PatchUuid, StringComparison.OrdinalIgnoreCase));
foreach (IXenConnection xc in ConnectionsManager.XenConnectionsCopy)
{
@ -748,7 +850,12 @@ namespace XenAdmin.Core
if (master == null || pool == null)
continue;
var outOfDateHosts = hosts.Where(host => new Version(Helpers.HostProductVersion(host)) < latestVersion.Version);
// Show the Upgrade alert for a host if:
// - the host version is older than this version AND
// - there is no patch (amongst the current version patches) that can update to this version OR, if there is a patch, the patch cannot be installed
var patchApplicable = patch != null && GetServerVersions(master, XenServerVersions).Any(v => v.Patches.Contains(patch));
var outOfDateHosts = hosts.Where(host => new Version(Helpers.HostProductVersion(host)) < version.Version
&& (!patchApplicable || !PatchCanBeInstalledOnHost(patch, host)));
if (outOfDateHosts.Count() == hosts.Count)
alert.IncludeConnection(xc);
@ -759,14 +866,27 @@ namespace XenAdmin.Core
return alert;
}
public static List<XenServerVersion> GetServerVersions(Host host, List<XenServerVersion> xenServerVersions)
{
var serverVersions = xenServerVersions.FindAll(version =>
{
if (version.BuildNumber != string.Empty)
return (host.BuildNumberRaw() == version.BuildNumber);
return Helpers.HostProductVersionWithOEM(host) == version.VersionAndOEM
|| (version.Oem != null && Helpers.OEMName(host).StartsWith(version.Oem)
&& Helpers.HostProductVersion(host) == version.Version.ToString());
});
return serverVersions;
}
public static void CheckServerVersion()
{
var alert = NewXenServerVersionAlert(XenServerVersionsForAutoCheck);
if (alert == null)
var alerts = NewXenServerVersionAlerts(XenServerVersionsForAutoCheck);
if (alerts == null || alerts.Count == 0)
return;
CheckUpdate(alert);
alerts.ForEach(a => CheckUpdate(a));
}
public static void CheckServerPatches()
@ -775,8 +895,7 @@ namespace XenAdmin.Core
if (alerts == null)
return;
foreach (var alert in alerts)
CheckUpdate(alert);
alerts.ForEach(a => CheckUpdate(a));
}
private static void CheckUpdate(XenServerUpdateAlert alert)

View File

@ -148,14 +148,14 @@ namespace XenAdmin.Core
if (HiddenFeatures.LinkLabelHidden)
return typeof(T) == typeof(VMSS) ? Messages.UPSELL_BLURB_VMSS : Messages.UPSELL_BLURB_VM_APPLIANCES;
else
return typeof(T) == typeof(VMSS) ? Messages.UPSELL_BLURB_VMSS + Messages.UPSELL_BLURB_VMSS_MORE : Messages.UPSELL_BLURB_VM_APPLIANCES + Messages.UPSELL_BLURB_VM_APPLIANCES_MORE;
return typeof(T) == typeof(VMSS) ? Messages.UPSELL_BLURB_VMSS + Messages.UPSELL_BLURB_TRIAL : Messages.UPSELL_BLURB_VM_APPLIANCES + Messages.UPSELL_BLURB_TRIAL;
}
}
internal static string UpsellLearnMoreUrl
{
get { return typeof(T) == typeof(VMSS) ? InvisibleMessages.UPSELL_LEARNMOREURL_VMSS : InvisibleMessages.UPSELL_LEARNMOREURL_VM_APPLIANCES; }
get { return InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL; }
}
internal static AsyncAction AssignVMsToGroupAction(T group, List<XenRef<VM>> vms, bool suppressHistory)

View File

@ -90,7 +90,7 @@ namespace XenAdmin.Diagnostics.Checks
problems.Add(new ToolsCD(this, residentVM));
VMsWithProblems.Add(residentVM.opaque_ref);
}
else if (sr != null && sr.content_type == SR.Content_Type_ISO)
else if (sr != null && sr.content_type == SR.Content_Type_ISO && (!sr.shared || Properties.Settings.Default.EjectSharedIsoOnUpdate))
{
problems.Add(new LocalCD(this, residentVM));
VMsWithProblems.Add(residentVM.opaque_ref);

View File

@ -0,0 +1,130 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System.Collections.Generic;
using System.Linq;
using XenAdmin.Core;
using XenAdmin.Diagnostics.Hotfixing;
using XenAdmin.Diagnostics.Problems;
using XenAdmin.Diagnostics.Problems.HostProblem;
using XenAdmin.Diagnostics.Problems.PoolProblem;
using XenAPI;
namespace XenAdmin.Diagnostics.Checks
{
class RestartHostOrToolstackPendingOnMasterCheck : Check
{
public string UpdateUuid { get; private set; }
private readonly Pool pool;
public RestartHostOrToolstackPendingOnMasterCheck(Pool pool, string updateUuid)
: base(Helpers.GetMaster(pool.Connection))
{
this.pool = pool;
this.UpdateUuid = updateUuid;
}
protected override Problem RunCheck()
{
if (!Host.IsLive())
return new HostNotLiveWarning(this, Host);
var elyOrGreater = Helpers.ElyOrGreater(Host);
double bootTime = Host.BootTime();
double agentStart = Host.AgentStartTime();
//check reboot
if (elyOrGreater)
{
foreach (var updateRef in Host.updates_requiring_reboot)
{
var update = Host.Connection.Resolve(updateRef);
if (string.IsNullOrEmpty(UpdateUuid) || //automated mode, any update
string.Equals(update.uuid, UpdateUuid, System.StringComparison.InvariantCultureIgnoreCase)) //normal mode the given update
{
return new MasterIsPendingRestartHostProblem(this, pool);
}
}
}
else
{
if (bootTime == 0.0 || agentStart == 0.0)
return null; //fine
var hostRestartRequiredPatches = Host.AppliedPatches().Where(p => p.after_apply_guidance.Contains(after_apply_guidance.restartHost) && ((double)Util.ToUnixTime(p.AppliedOn(Host)) > agentStart));
foreach (Pool_patch patch in hostRestartRequiredPatches)
{
if (string.IsNullOrEmpty(UpdateUuid) //automated mode, any update
|| string.Equals(patch.uuid, UpdateUuid, System.StringComparison.InvariantCultureIgnoreCase)) //normal mode the given update
{
return new MasterIsPendingRestartHostProblem(this, pool);
}
}
}
//check toolstack restart
var toolstackRestartRequiredPatches = Host.AppliedPatches().Where(p => p.after_apply_guidance.Contains(after_apply_guidance.restartXAPI) && ((double)Util.ToUnixTime(p.AppliedOn(Host)) > agentStart));
foreach (Pool_patch patch in toolstackRestartRequiredPatches)
{
if (string.IsNullOrEmpty(UpdateUuid)) //automated mode
{
return new MasterIsPendingRestartToolstackProblem(this, pool);
}
if (!elyOrGreater) //normal mode pre-Ely
{
if (bootTime == 0.0 || agentStart == 0.0)
return null; //fine
if (string.Equals(patch.uuid, UpdateUuid, System.StringComparison.InvariantCultureIgnoreCase))
return new MasterIsPendingRestartToolstackProblem(this, pool);
}
else //normal mode Ely+
{
var poolUpdate = Host.Connection.Resolve(patch.pool_update);
if (poolUpdate != null && string.Equals(UpdateUuid, poolUpdate.uuid, System.StringComparison.InvariantCultureIgnoreCase))
{
return new MasterIsPendingRestartToolstackProblem(this, pool);
}
}
}
return null;
}
public override string Description
{
get { return Messages.PENDING_RESTART_CHECK; }
}
}
}

View File

@ -0,0 +1,67 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using XenAPI;
using XenAdmin.Diagnostics.Problems;
using XenAdmin.Core;
using XenAdmin.Diagnostics.Problems.PoolProblem;
using XenAdmin.Alerts;
namespace XenAdmin.Diagnostics.Checks
{
public class XenCenterVersionCheck : Check
{
private XenServerVersion _newServerVersion;
public XenCenterVersionCheck(XenServerVersion newServerVersion)
: base(null)
{
_newServerVersion = newServerVersion;
}
protected override Problem RunCheck()
{
var requiredXenCenterVersion = Updates.GetRequiredXenCenterVersion(_newServerVersion);
if (requiredXenCenterVersion == null)
return null;
if (_newServerVersion != null)
return new XenCenterVersionProblem(this, requiredXenCenterVersion);
else
return new XenCenterVersionWarning(this, requiredXenCenterVersion);
}
public override string Description
{
get { return Messages.XENCENTER_VERSION_CHECK_DESCRIPTION; }
}
}
}

View File

@ -42,7 +42,7 @@ namespace XenAdmin.Diagnostics.Hotfixing
Clearwater,
Creedence,
Dundee,
Ely
ElyFalcon
}
private readonly Hotfix clearwaterHotfix = new SingleHotfix
@ -63,16 +63,16 @@ namespace XenAdmin.Diagnostics.Hotfixing
UUID = "474a0f28-0d33-4c9b-9e20-52baaea8ce5e"
};
private readonly Hotfix elyHotfix = new SingleHotfix
private readonly Hotfix elyFalconHotfix = new SingleHotfix
{
Filename = "RPU004",
UUID = "b8d21409-adb7-44a5-a7ff-a78ed97162a5"
UUID = "439235bf-48fa-4ee3-9c11-d67084a01205"
};
public Hotfix Hotfix(Host host)
{
if (Helpers.ElyOrGreater(host) && !Helpers.FalconOrGreater(host))
return Hotfix(HotfixableServerVersion.Ely);
if (Helpers.ElyOrGreater(host) && !Helpers.InvernessOrGreater(host))
return Hotfix(HotfixableServerVersion.ElyFalcon);
if (Helpers.DundeeOrGreater(host) && !Helpers.ElyOrGreater(host))
return Hotfix(HotfixableServerVersion.Dundee);
if (Helpers.CreedenceOrGreater(host) && !Helpers.DundeeOrGreater(host))
@ -85,8 +85,8 @@ namespace XenAdmin.Diagnostics.Hotfixing
public Hotfix Hotfix(HotfixableServerVersion version)
{
if (version == HotfixableServerVersion.Ely)
return elyHotfix;
if (version == HotfixableServerVersion.ElyFalcon)
return elyFalconHotfix;
if (version == HotfixableServerVersion.Dundee)
return dundeeHotfix;
if (version == HotfixableServerVersion.Creedence)

View File

@ -0,0 +1,94 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using XenAdmin.Core;
using XenAdmin.Diagnostics.Checks;
using XenAdmin.Diagnostics.Hotfixing;
using XenAdmin.Properties;
using XenAPI;
namespace XenAdmin.Diagnostics.Problems.PoolProblem
{
class MasterIsPendingRestartHostProblem : PoolProblem
{
public MasterIsPendingRestartHostProblem(RestartHostOrToolstackPendingOnMasterCheck check, Pool pool)
: base(check, pool)
{ }
public override string Description
{
get
{
return string.Format(
((RestartHostOrToolstackPendingOnMasterCheck)Check).UpdateUuid != null
? Messages.PROBLEM_MASTER_PENDING_RESTART_HOST_THIS_UPDATE
: Messages.PROBLEM_MASTER_PENDING_RESTART_HOST,
Helpers.GetName(Pool).Ellipsise(30));
}
}
public override string HelpMessage
{
get { return null; }
}
}
class MasterIsPendingRestartToolstackProblem : PoolProblem
{
public MasterIsPendingRestartToolstackProblem(RestartHostOrToolstackPendingOnMasterCheck check, Pool pool)
: base(check, pool)
{ }
public override string Description
{
get
{
return string.Format(
((RestartHostOrToolstackPendingOnMasterCheck)Check).UpdateUuid != null
? Messages.PROBLEM_MASTER_PENDING_RESTART_TOOLSTACK_THIS_UPDATE
: Messages.PROBLEM_MASTER_PENDING_RESTART_TOOLSTACK,
Helpers.GetName(Pool).Ellipsise(30));
}
}
public override string HelpMessage
{
get { return null; }
}
}
}

View File

@ -0,0 +1,109 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using XenAdmin.Core;
using XenAdmin.Diagnostics.Checks;
namespace XenAdmin.Diagnostics.Problems
{
public class XenCenterVersionProblem : ProblemWithInformationUrl
{
private XenCenterVersion _requiredXenCenterVersion;
public XenCenterVersionProblem(Check check, XenCenterVersion requiredXenCenterVersion)
: base(check)
{
_requiredXenCenterVersion = requiredXenCenterVersion;
}
public override string Title
{
get { return Messages.PROBLEM_XENCENTER_VERSION_TITLE; }
}
public override string Description
{
get { return string.Format(Messages.UPDATES_WIZARD_NEWER_XENCENTER_REQUIRED, _requiredXenCenterVersion.Version); }
}
public override string HelpMessage
{
get { return LinkText; }
}
public override string LinkText
{
get { return Messages.PATCHING_WIZARD_WEBPAGE_CELL; }
}
public override Uri UriToLaunch
{
get { return new Uri(_requiredXenCenterVersion.Url); }
}
}
public class XenCenterVersionWarning : WarningWithInformationUrl
{
private XenCenterVersion _requiredXenCenterVersion;
public XenCenterVersionWarning(Check check, XenCenterVersion requiredXenCenterVersion)
: base(check)
{
_requiredXenCenterVersion = requiredXenCenterVersion;
}
public override string Title
{
get { return Messages.PROBLEM_XENCENTER_VERSION_TITLE; }
}
public override string Description
{
get { return string.Format(Messages.UPDATES_WIZARD_NEWER_XENCENTER_WARNING, _requiredXenCenterVersion.Version); }
}
public override string HelpMessage
{
get { return LinkText; }
}
public override string LinkText
{
get { return Messages.PATCHING_WIZARD_WEBPAGE_CELL; }
}
public override Uri UriToLaunch
{
get { return new Uri(_requiredXenCenterVersion.Url); }
}
}
}

View File

@ -262,7 +262,7 @@
<value>1</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Copyright © Citrix Systems, Inc. All rights reserved.</value>
<value>Copyright © [Citrix] Systems, Inc. All rights reserved.</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>

View File

@ -262,7 +262,7 @@
<value>1</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Copyright © Citrix Systems, Inc. All rights reserved.</value>
<value>Copyright © [Citrix] Systems, Inc. All rights reserved.</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>

View File

@ -262,7 +262,7 @@
<value>1</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>版权所有 © Citrix Systems, Inc. 保留所有权利。</value>
<value>版权所有 © [Citrix] Systems, Inc. 保留所有权利。</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>

157
XenAdmin/Dialogs/AttachUsbDialog.Designer.cs generated Executable file
View File

@ -0,0 +1,157 @@
namespace XenAdmin.Dialogs
{
partial class AttachUsbDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AttachUsbDialog));
this.buttonAttach = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.treeUsbList = new XenAdmin.Controls.CustomTreeView();
this.labelNote = new System.Windows.Forms.Label();
this.pictureBoxAlert = new System.Windows.Forms.PictureBox();
this.labelWarningLine1 = new XenAdmin.Controls.Common.AutoHeightLabel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.labelWarningLine3 = new XenAdmin.Controls.Common.AutoHeightLabel();
this.labelWarningLine2 = new XenAdmin.Controls.Common.AutoHeightLabel();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAlert)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// buttonAttach
//
this.buttonAttach.DialogResult = System.Windows.Forms.DialogResult.OK;
resources.ApplyResources(this.buttonAttach, "buttonAttach");
this.buttonAttach.Name = "buttonAttach";
this.buttonAttach.UseVisualStyleBackColor = true;
this.buttonAttach.Click += new System.EventHandler(this.buttonAttach_Click);
//
// buttonCancel
//
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.buttonCancel, "buttonCancel");
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseVisualStyleBackColor = true;
//
// treeUsbList
//
this.tableLayoutPanel1.SetColumnSpan(this.treeUsbList, 2);
resources.ApplyResources(this.treeUsbList, "treeUsbList");
this.treeUsbList.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed;
this.treeUsbList.Name = "treeUsbList";
this.treeUsbList.NodeIndent = 19;
this.treeUsbList.RootAlwaysExpanded = false;
this.treeUsbList.ShowCheckboxes = false;
this.treeUsbList.ShowDescription = false;
this.treeUsbList.ShowImages = false;
this.treeUsbList.ShowRootLines = true;
this.treeUsbList.SelectedIndexChanged += new System.EventHandler(this.treeUsbList_SelectedIndexChanged);
//
// labelNote
//
resources.ApplyResources(this.labelNote, "labelNote");
this.tableLayoutPanel1.SetColumnSpan(this.labelNote, 2);
this.labelNote.Name = "labelNote";
//
// pictureBoxAlert
//
resources.ApplyResources(this.pictureBoxAlert, "pictureBoxAlert");
this.pictureBoxAlert.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxAlert.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
this.pictureBoxAlert.InitialImage = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
this.pictureBoxAlert.Name = "pictureBoxAlert";
this.pictureBoxAlert.TabStop = false;
//
// labelWarningLine1
//
resources.ApplyResources(this.labelWarningLine1, "labelWarningLine1");
this.labelWarningLine1.Name = "labelWarningLine1";
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.labelNote, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.treeUsbList, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.labelWarningLine3, 1, 6);
this.tableLayoutPanel1.Controls.Add(this.labelWarningLine2, 1, 5);
this.tableLayoutPanel1.Controls.Add(this.labelWarningLine1, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel1, 0, 7);
this.tableLayoutPanel1.Controls.Add(this.pictureBoxAlert, 0, 4);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// labelWarningLine3
//
resources.ApplyResources(this.labelWarningLine3, "labelWarningLine3");
this.labelWarningLine3.Name = "labelWarningLine3";
//
// labelWarningLine2
//
resources.ApplyResources(this.labelWarningLine2, "labelWarningLine2");
this.labelWarningLine2.Name = "labelWarningLine2";
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.tableLayoutPanel1.SetColumnSpan(this.flowLayoutPanel1, 2);
this.flowLayoutPanel1.Controls.Add(this.buttonCancel);
this.flowLayoutPanel1.Controls.Add(this.buttonAttach);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// AttachUsbDialog
//
this.AcceptButton = this.buttonAttach;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.CancelButton = this.buttonCancel;
this.Controls.Add(this.tableLayoutPanel1);
this.HelpButton = false;
this.Name = "AttachUsbDialog";
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAlert)).EndInit();
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private XenAdmin.Controls.CustomTreeView treeUsbList;
private System.Windows.Forms.Button buttonAttach;
private System.Windows.Forms.Button buttonCancel;
private System.Windows.Forms.Label labelNote;
private System.Windows.Forms.PictureBox pictureBoxAlert;
private Controls.Common.AutoHeightLabel labelWarningLine1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private Controls.Common.AutoHeightLabel labelWarningLine3;
private Controls.Common.AutoHeightLabel labelWarningLine2;
}
}

View File

@ -0,0 +1,159 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Collections.Generic;
using XenAdmin.Controls;
using XenAdmin.Core;
using XenAdmin.Actions;
using XenAPI;
namespace XenAdmin.Dialogs
{
public partial class AttachUsbDialog : XenDialogBase
{
private VM _vm;
private List<Host> possibleHosts;
public AttachUsbDialog(VM vm): base(vm.Connection)
{
_vm = vm;
possibleHosts = new List<Host>();
InitializeComponent();
BuildList();
treeUsbList_SelectedIndexChanged(null, null);
DelegatedAsyncAction action = new DelegatedAsyncAction(_vm.Connection,
string.Format(Messages.FETCH_POSSIBLE_HOSTS, _vm.Name()),
string.Format(Messages.FETCHING_POSSIBLE_HOSTS, _vm.Name()),
string.Format(Messages.FETCHED_POSSIBLE_HOSTS, _vm.Name()),
delegate (Session session)
{
List<XenRef<Host>> possibleHostRefs = VM.get_possible_hosts(_vm.Connection.Session, _vm.opaque_ref);
possibleHosts = _vm.Connection.ResolveAll(possibleHostRefs);
},
true);
action.Completed += delegate
{
Program.Invoke(Program.MainWindow, BuildList);
};
action.RunAsync();
}
private void BuildList()
{
Program.AssertOnEventThread();
labelWarningLine3.Visible = !_vm.UsingUpstreamQemu();
treeUsbList.ClearAllNodes();
treeUsbList.BeginUpdate();
try
{
List<UsbItem> usbNodeList = new List<UsbItem>();
foreach (Host host in possibleHosts)
{
// Add a host node to tree list.
HostItem hostNode = new HostItem(host);
List<PUSB> pusbs = host.Connection.ResolveAll(host.PUSBs);
foreach (PUSB pusb in pusbs)
{
// Add a USB in the host to tree list.
// Determin if the USB is valid to attach.
USB_group usbGroup = pusb.Connection.Resolve(pusb.USB_group);
bool attached = (usbGroup != null) && (usbGroup.VUSBs != null) && (usbGroup.VUSBs.Count > 0);
if (pusb.passthrough_enabled && !attached)
{
UsbItem usbNode = new UsbItem(pusb);
usbNodeList.Add(usbNode);
}
}
// Show host node only when it contains available USB devices.
if (usbNodeList.Count > 0)
{
treeUsbList.AddNode(hostNode);
foreach (UsbItem item in usbNodeList)
{
treeUsbList.AddChildNode(hostNode, item);
}
}
usbNodeList.Clear();
}
if (treeUsbList.Nodes.Count == 0)
{
CustomTreeNode noDeviceNode = new CustomTreeNode(false);
noDeviceNode.Text = Messages.DIALOG_ATTACH_USB_NO_DEVICES_AVAILABLE;
treeUsbList.AddNode(noDeviceNode);
}
}
finally
{
treeUsbList.EndUpdate();
}
}
private void treeUsbList_SelectedIndexChanged(object sender, EventArgs e)
{
buttonAttach.Enabled = treeUsbList.SelectedItem is UsbItem;
}
private void buttonAttach_Click(object sender, EventArgs e)
{
UsbItem item = treeUsbList.SelectedItem as UsbItem;
if (item != null)
new XenAdmin.Actions.CreateVUSBAction(item.Pusb, _vm).RunAsync();
}
private class HostItem : CustomTreeNode
{
private Host _host;
public HostItem(Host host) :base(false)
{
_host = host;
Text = host.name_label;
}
}
private class UsbItem : CustomTreeNode
{
public PUSB Pusb { get; private set; }
public UsbItem(PUSB pusb) :base(true)
{
Pusb = pusb;
Text = String.Format(Messages.STRING_SPACE_STRING, Pusb.path, Pusb.Description());
}
}
}
}

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonAttach.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonAttach.Location" type="System.Drawing.Point, System.Drawing">
<value>212, 3</value>
</data>
<data name="buttonAttach.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonAttach.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="buttonAttach.Text" xml:space="preserve">
<value>&amp;Attach</value>
</data>
<data name="&gt;&gt;buttonAttach.Name" xml:space="preserve">
<value>buttonAttach</value>
</data>
<data name="&gt;&gt;buttonAttach.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;buttonAttach.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonAttach.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonCancel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>293, 3</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>&amp;Cancel</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="&gt;&gt;buttonCancel.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;buttonCancel.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNote.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelNote.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelNote.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="labelNote.Size" type="System.Drawing.Size, System.Drawing">
<value>323, 15</value>
</data>
<data name="labelNote.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNote.Text" xml:space="preserve">
<value>Select a device to be passed through to this virtual machine.</value>
</data>
<data name="&gt;&gt;labelNote.Name" xml:space="preserve">
<value>labelNote</value>
</data>
<data name="&gt;&gt;labelNote.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;labelNote.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelNote.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelWarningLine3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine3.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine3.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine3.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 230</value>
</data>
<data name="labelWarningLine3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine3.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 45</value>
</data>
<data name="labelWarningLine3.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="labelWarningLine3.Text" xml:space="preserve">
<value>A major component update of VM will be performed the first time when a USB device is passed through to it. This update is irreversible.</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Name" xml:space="preserve">
<value>labelWarningLine3</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine3.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="labelWarningLine2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine2.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine2.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 197</value>
</data>
<data name="labelWarningLine2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine2.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 30</value>
</data>
<data name="labelWarningLine2.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="labelWarningLine2.Text" xml:space="preserve">
<value>USB devices with modifiable behaviour should only be assigned to trustworthy guest VMs.</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Name" xml:space="preserve">
<value>labelWarningLine2</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="labelWarningLine1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine1.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine1.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 164</value>
</data>
<data name="labelWarningLine1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine1.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 30</value>
</data>
<data name="labelWarningLine1.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="labelWarningLine1.Text" xml:space="preserve">
<value>Plugging in untrustworthy USB devices to your computer may put your computer at risk.</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Name" xml:space="preserve">
<value>labelWarningLine1</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine1.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>RightToLeft</value>
</data>
<data name="flowLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 278</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>371, 31</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="pictureBoxAlert.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="pictureBoxAlert.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pictureBoxAlert.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 161</value>
</data>
<data name="pictureBoxAlert.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxAlert.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 22</value>
</data>
<data name="pictureBoxAlert.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxAlert.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.Name" xml:space="preserve">
<value>pictureBoxAlert</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.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;pictureBoxAlert.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>377, 312</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</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="labelNote" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="treeUsbList" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelWarningLine3" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelWarningLine2" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelWarningLine1" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="pictureBoxAlert" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,30,Percent,100" /&gt;&lt;Rows Styles="Absolute,10,AutoSize,0,Absolute,10,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="treeUsbList.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="treeUsbList.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="treeUsbList.IntegralHeight" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="treeUsbList.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="treeUsbList.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 38</value>
</data>
<data name="treeUsbList.Size" type="System.Drawing.Size, System.Drawing">
<value>371, 120</value>
</data>
<data name="treeUsbList.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;treeUsbList.Name" xml:space="preserve">
<value>treeUsbList</value>
</data>
<data name="&gt;&gt;treeUsbList.Type" xml:space="preserve">
<value>XenAdmin.Controls.CustomTreeView, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;treeUsbList.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;treeUsbList.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>377, 312</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>41, 19, 41, 19</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Attach USB</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>AttachUsbDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonAttach.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonAttach.Location" type="System.Drawing.Point, System.Drawing">
<value>212, 3</value>
</data>
<data name="buttonAttach.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonAttach.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="buttonAttach.Text" xml:space="preserve">
<value>&amp;Attach</value>
</data>
<data name="&gt;&gt;buttonAttach.Name" xml:space="preserve">
<value>buttonAttach</value>
</data>
<data name="&gt;&gt;buttonAttach.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;buttonAttach.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonAttach.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonCancel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>293, 3</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>&amp;Cancel</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="&gt;&gt;buttonCancel.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;buttonCancel.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNote.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelNote.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelNote.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="labelNote.Size" type="System.Drawing.Size, System.Drawing">
<value>323, 15</value>
</data>
<data name="labelNote.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNote.Text" xml:space="preserve">
<value>Select a device to be passed through to this virtual machine.</value>
</data>
<data name="&gt;&gt;labelNote.Name" xml:space="preserve">
<value>labelNote</value>
</data>
<data name="&gt;&gt;labelNote.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;labelNote.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelNote.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelWarningLine3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine3.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine3.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine3.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 230</value>
</data>
<data name="labelWarningLine3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine3.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 45</value>
</data>
<data name="labelWarningLine3.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="labelWarningLine3.Text" xml:space="preserve">
<value>A major component update of VM will be performed the first time when a USB device is passed through to it. This update is irreversible.</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Name" xml:space="preserve">
<value>labelWarningLine3</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine3.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="labelWarningLine2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine2.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine2.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 197</value>
</data>
<data name="labelWarningLine2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine2.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 30</value>
</data>
<data name="labelWarningLine2.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="labelWarningLine2.Text" xml:space="preserve">
<value>USB devices with modifiable behaviour should only be assigned to trustworthy guest VMs.</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Name" xml:space="preserve">
<value>labelWarningLine2</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="labelWarningLine1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine1.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine1.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 164</value>
</data>
<data name="labelWarningLine1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine1.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 30</value>
</data>
<data name="labelWarningLine1.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="labelWarningLine1.Text" xml:space="preserve">
<value>Plugging in untrustworthy USB devices to your computer may put your computer at risk.</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Name" xml:space="preserve">
<value>labelWarningLine1</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine1.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>RightToLeft</value>
</data>
<data name="flowLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 278</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>371, 31</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="pictureBoxAlert.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="pictureBoxAlert.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pictureBoxAlert.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 161</value>
</data>
<data name="pictureBoxAlert.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxAlert.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 22</value>
</data>
<data name="pictureBoxAlert.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxAlert.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.Name" xml:space="preserve">
<value>pictureBoxAlert</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.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;pictureBoxAlert.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>377, 312</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</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="labelNote" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="treeUsbList" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelWarningLine3" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelWarningLine2" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelWarningLine1" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="pictureBoxAlert" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,30,Percent,100" /&gt;&lt;Rows Styles="Absolute,10,AutoSize,0,Absolute,10,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="treeUsbList.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="treeUsbList.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="treeUsbList.IntegralHeight" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="treeUsbList.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="treeUsbList.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 38</value>
</data>
<data name="treeUsbList.Size" type="System.Drawing.Size, System.Drawing">
<value>371, 120</value>
</data>
<data name="treeUsbList.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;treeUsbList.Name" xml:space="preserve">
<value>treeUsbList</value>
</data>
<data name="&gt;&gt;treeUsbList.Type" xml:space="preserve">
<value>XenAdmin.Controls.CustomTreeView, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;treeUsbList.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;treeUsbList.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>377, 312</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>41, 19, 41, 19</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Attach USB</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>AttachUsbDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonAttach.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonAttach.Location" type="System.Drawing.Point, System.Drawing">
<value>212, 3</value>
</data>
<data name="buttonAttach.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonAttach.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="buttonAttach.Text" xml:space="preserve">
<value>&amp;Attach</value>
</data>
<data name="&gt;&gt;buttonAttach.Name" xml:space="preserve">
<value>buttonAttach</value>
</data>
<data name="&gt;&gt;buttonAttach.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;buttonAttach.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonAttach.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonCancel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>293, 3</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>&amp;Cancel</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="&gt;&gt;buttonCancel.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;buttonCancel.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNote.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelNote.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelNote.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="labelNote.Size" type="System.Drawing.Size, System.Drawing">
<value>323, 15</value>
</data>
<data name="labelNote.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="labelNote.Text" xml:space="preserve">
<value>Select a device to be passed through to this virtual machine.</value>
</data>
<data name="&gt;&gt;labelNote.Name" xml:space="preserve">
<value>labelNote</value>
</data>
<data name="&gt;&gt;labelNote.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;labelNote.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelNote.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelWarningLine3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine3.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine3.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine3.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 230</value>
</data>
<data name="labelWarningLine3.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine3.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 45</value>
</data>
<data name="labelWarningLine3.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="labelWarningLine3.Text" xml:space="preserve">
<value>A major component update of VM will be performed the first time when a USB device is passed through to it. This update is irreversible.</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Name" xml:space="preserve">
<value>labelWarningLine3</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine3.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine3.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="labelWarningLine2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine2.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine2.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 197</value>
</data>
<data name="labelWarningLine2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine2.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 30</value>
</data>
<data name="labelWarningLine2.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="labelWarningLine2.Text" xml:space="preserve">
<value>USB devices with modifiable behaviour should only be assigned to trustworthy guest VMs.</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Name" xml:space="preserve">
<value>labelWarningLine2</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine2.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="labelWarningLine1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelWarningLine1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarningLine1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarningLine1.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarningLine1.Location" type="System.Drawing.Point, System.Drawing">
<value>33, 164</value>
</data>
<data name="labelWarningLine1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 0</value>
</data>
<data name="labelWarningLine1.Size" type="System.Drawing.Size, System.Drawing">
<value>341, 30</value>
</data>
<data name="labelWarningLine1.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="labelWarningLine1.Text" xml:space="preserve">
<value>Plugging in untrustworthy USB devices to your computer may put your computer at risk.</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Name" xml:space="preserve">
<value>labelWarningLine1</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarningLine1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarningLine1.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>RightToLeft</value>
</data>
<data name="flowLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 278</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>371, 31</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="pictureBoxAlert.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<data name="pictureBoxAlert.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pictureBoxAlert.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 161</value>
</data>
<data name="pictureBoxAlert.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxAlert.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 22</value>
</data>
<data name="pictureBoxAlert.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxAlert.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.Name" xml:space="preserve">
<value>pictureBoxAlert</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.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;pictureBoxAlert.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>377, 312</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</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="labelNote" Row="1" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="treeUsbList" Row="3" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="labelWarningLine3" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelWarningLine2" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="labelWarningLine1" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="flowLayoutPanel1" Row="7" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="pictureBoxAlert" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,30,Percent,100" /&gt;&lt;Rows Styles="Absolute,10,AutoSize,0,Absolute,10,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="treeUsbList.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="treeUsbList.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="treeUsbList.IntegralHeight" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="treeUsbList.ItemHeight" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="treeUsbList.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 38</value>
</data>
<data name="treeUsbList.Size" type="System.Drawing.Size, System.Drawing">
<value>371, 120</value>
</data>
<data name="treeUsbList.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;treeUsbList.Name" xml:space="preserve">
<value>treeUsbList</value>
</data>
<data name="&gt;&gt;treeUsbList.Type" xml:space="preserve">
<value>XenAdmin.Controls.CustomTreeView, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;treeUsbList.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;treeUsbList.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>377, 312</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>41, 19, 41, 19</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Attach USB</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>AttachUsbDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -112,20 +112,20 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lblInstructions.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lblInstructions.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 14</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lblInstructions.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
@ -253,6 +253,6 @@
<value>DuplicateTemplateNameDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -112,20 +112,20 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lblInstructions.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lblInstructions.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 14</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lblInstructions.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
@ -253,6 +253,6 @@
<value>DuplicateTemplateNameDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -112,20 +112,20 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lblInstructions.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="lblInstructions.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 14</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="lblInstructions.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
@ -253,6 +253,6 @@
<value>DuplicateTemplateNameDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -832,7 +832,7 @@
<value>4</value>
</data>
<data name="decentGroupBox1.Text" xml:space="preserve">
<value>Citrix Insight Services による認証</value>
<value>[Citrix] Insight Services での認証</value>
</data>
<data name="&gt;&gt;decentGroupBox1.Name" xml:space="preserve">
<value>decentGroupBox1</value>
@ -871,7 +871,7 @@
<value>10</value>
</data>
<data name="rubricLabel.Text" xml:space="preserve">
<value>ヘルス チェックでは、XenServer プールで設定された事前定義済みのスケジュールに基づいて、サーバーの状態レポートが Citrix Insight Services に自動的にアップロードされます。</value>
<value>ヘルス チェックでは、[XenServer] プールで設定された事前定義済みのスケジュールに基づいて、サーバーの状態レポートが自動的に [Citrix] Insight Services にアップロードされます。</value>
</data>
<data name="&gt;&gt;rubricLabel.Name" xml:space="preserve">
<value>rubricLabel</value>
@ -1153,7 +1153,7 @@
<value>24</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>ヘルス チェック サービスが XenServer に接続するための資格情報を入力してください。</value>
<value>ヘルス チェック サービスが [XenServer] に接続するための資格情報を入力してください。</value>
</data>
<data name="label3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
@ -1456,7 +1456,7 @@
<value>3</value>
</data>
<data name="decentGroupBoxXSCredentials.Text" xml:space="preserve">
<value>XenServer の資格情報</value>
<value>[XenServer] の資格情報</value>
</data>
<data name="&gt;&gt;decentGroupBoxXSCredentials.Name" xml:space="preserve">
<value>decentGroupBoxXSCredentials</value>

View File

@ -832,7 +832,7 @@
<value>5</value>
</data>
<data name="decentGroupBox1.Text" xml:space="preserve">
<value>Authentication with Citrix Insight Services</value>
<value>Authentication with [Citrix] Insight Services</value>
</data>
<data name="&gt;&gt;decentGroupBox1.Name" xml:space="preserve">
<value>decentGroupBox1</value>
@ -871,7 +871,7 @@
<value>0</value>
</data>
<data name="rubricLabel.Text" xml:space="preserve">
<value>Health Check will automatically upload a server status report to Citrix Insight Services, based on a predefined schedule configured on your XenServer pool.</value>
<value>Health Check will automatically upload a server status report to [Citrix] Insight Services, based on a predefined schedule configured on your [XenServer] pool.</value>
</data>
<data name="&gt;&gt;rubricLabel.Name" xml:space="preserve">
<value>rubricLabel</value>
@ -1153,7 +1153,7 @@
<value>0</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>Enter the credentials the Health Check Service will use to connect to XenServer.</value>
<value>Enter the credentials the Health Check Service will use to connect to [XenServer].</value>
</data>
<data name="label3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
@ -1456,7 +1456,7 @@
<value>4</value>
</data>
<data name="decentGroupBoxXSCredentials.Text" xml:space="preserve">
<value>XenServer Credentials</value>
<value>[XenServer] Credentials</value>
</data>
<data name="&gt;&gt;decentGroupBoxXSCredentials.Name" xml:space="preserve">
<value>decentGroupBoxXSCredentials</value>

View File

@ -832,7 +832,7 @@
<value>4</value>
</data>
<data name="decentGroupBox1.Text" xml:space="preserve">
<value>通过 Citrix Insight Services 进行身份验证</value>
<value>通过 [Citrix] Insight Services 进行身份验证</value>
</data>
<data name="&gt;&gt;decentGroupBox1.Name" xml:space="preserve">
<value>decentGroupBox1</value>
@ -871,7 +871,7 @@
<value>10</value>
</data>
<data name="rubricLabel.Text" xml:space="preserve">
<value>运行状况检查会自动将服务器状态报告上载到 Citrix Insight Services具体取决于您的 XenServer 池上配置的预定义计划。</value>
<value>运行状况检查会自动将服务器状态报告上载到 [Citrix] Insight Services具体取决于您的 [XenServer] 池上配置的预定义计划。</value>
</data>
<data name="&gt;&gt;rubricLabel.Name" xml:space="preserve">
<value>rubricLabel</value>
@ -1153,7 +1153,7 @@
<value>24</value>
</data>
<data name="label3.Text" xml:space="preserve">
<value>请输入运行状况检查服务连接到 XenServer 时使用的凭据。</value>
<value>请输入运行状况检查服务连接到 [XenServer] 时使用的凭据。</value>
</data>
<data name="label3.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
@ -1456,7 +1456,7 @@
<value>3</value>
</data>
<data name="decentGroupBoxXSCredentials.Text" xml:space="preserve">
<value>XenServer 凭据</value>
<value>[XenServer] 凭据</value>
</data>
<data name="&gt;&gt;decentGroupBoxXSCredentials.Name" xml:space="preserve">
<value>decentGroupBoxXSCredentials</value>

View File

@ -250,7 +250,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citrix Systems, Inc. in the United States and other countries.</value>
Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of [Citrix] Systems, Inc. in the United States and other countries.</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
@ -283,7 +283,7 @@ Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citr
<value>5</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Citrix、Citrix XenServer、Xen、Xen のロゴ、XenCenter、XenMotion は、米国およびその他の国の Citrix Systems, Inc. の商標または登録商標です。</value>
<value>[Citrix][Citrix] [XenServer]、Xen、Xen のロゴ、[XenCenter]、XenMotion は、米国およびその他の国の [Citrix] Systems, Inc. の商標または登録商標です。</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
@ -355,7 +355,7 @@ Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citr
<value>4</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Copyright © Citrix Systems, Inc. All rights reserved.</value>
<value>Copyright © [Citrix] Systems, Inc. All rights reserved.</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>

View File

@ -250,7 +250,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citrix Systems, Inc. in the United States and other countries.</value>
Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of [Citrix] Systems, Inc. in the United States and other countries.</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
@ -283,7 +283,7 @@ Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citr
<value>5</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Citrix, Citrix XenServer, Xen, the Xen logo, XenCenter, XenMotion are trademarks and/or registered trademarks of Citrix Systems, Inc. in the United States and other countries.</value>
<value>[Citrix], [Citrix] [XenServer], Xen, the Xen logo, [XenCenter], XenMotion are trademarks and/or registered trademarks of [Citrix] Systems, Inc. in the United States and other countries.</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
@ -355,7 +355,7 @@ Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citr
<value>4</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Copyright © Citrix Systems, Inc. All rights reserved.</value>
<value>Copyright © [Citrix] Systems, Inc. All rights reserved.</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>

View File

@ -250,7 +250,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citrix Systems, Inc. in the United States and other countries.</value>
Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of [Citrix] Systems, Inc. in the United States and other countries.</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
@ -283,7 +283,7 @@ Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citr
<value>5</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Citrix、Citrix XenServer、Xen、Xen 徽标、XenCenter、XenMotion 是 Citrix Systems, Inc. 在美国及其他国家/地区的商标和/或注册商标。</value>
<value>[Citrix][Citrix] [XenServer]、Xen、Xen 徽标、[XenCenter]、XenMotion 是 [Citrix] Systems, Inc. 在美国及其他国家/地区的商标和/或注册商标。</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
@ -355,7 +355,7 @@ Xen, the Xen logo, XenMotion are trademarks and/or registered trademarks of Citr
<value>4</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>版权所有 © Citrix Systems, Inc. 保留所有权利。</value>
<value>版权所有 © [Citrix] Systems, Inc. 保留所有权利。</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>

View File

@ -358,14 +358,14 @@ namespace XenAdmin.Dialogs
case Dialogs.LicenseStatus.HostState.Expired:
if (licenseStatus.PoolLicensingModel == Dialogs.LicenseStatus.LicensingModel.Clearwater)
return Messages.LICENSE_UNSUPPORTED;
return Messages.LICENSE_EXPIRED;
return Messages.LICENSE_UNLICENSED;
case Dialogs.LicenseStatus.HostState.Free:
switch (licenseStatus.PoolLicensingModel)
{
case Dialogs.LicenseStatus.LicensingModel.Clearwater:
return Messages.LICENSE_UNSUPPORTED;
case Dialogs.LicenseStatus.LicensingModel.Creedence:
return Messages.LICENSE_EXPIRED;
return Messages.LICENSE_UNLICENSED;
default:
return Messages.LICENSE_FREE;
}

View File

@ -542,16 +542,16 @@
</data>
<data mimetype="application/x-microsoft.net.object.bytearray.base64" name="pictureBoxError.Image" type="System.Drawing.Bitmap, System.Drawing">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAHpSURBVDhPlZNdT9RAFIan7Yq3/pSN6P/oX+JGEi4IygVcuSuisERIQXYDhMRCQjAYzBoBUfko
BAgaWRcIRJDk8JzpdFPgipM86dc875xpp+Z2dRRMCBHILfRe6IbdLR4+grgv8GTJK0jDPJRjaJg22YM5
7vXyTMfoWKel5eT6rF+Qc6RTaMIfxEMXsGMeyCaM+oGG1G+EcBGrfJab9TccwC5sI/6EdViBiu/bTjI5
1LZ11r/wrzwgV8mO/Co+bc2aFJ/IJfca5Vfy2RRkCbrT5YQaEC2yviM3q8pa/5tN2UTchivOtc55VkVe
MIFUPNtFpAGyj5it9QBBZS09ZvIlx+liu4wgf4BpUNcGZGvdol1d649ciJbKU8XH8hZpCmagZmwHaUCC
tAHfYdUGtLdm1tKAKgE1G+DLJET5gDWkb/CV9a3nZBWV7DwmZAJxDCq5gKjmBfIFeRkukqQlTCK8hwsX
cspLHLKyJ/2e/Qr2JYY9fJJPyB/hKBqXMwZOIJZoWVud5fyE4LVyWZ4jv4bOwG7vdGtzEg+yOeYR9A0P
Q8m1qgHvQKUeeKFHP93SVtbiwm7lEiH6eaoI4y5gBGEINKAE3b6d+eZW1nIhcRetvWR9+pKGEd44sZd7
z9K27/5M+eLhPX5nY64BiGvD2gP8aTAAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V
k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0
U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs
X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78
Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31
AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq
ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl
hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/
3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj
rgGIa8PaA/xpMAAAAABJRU5ErkJggg==
</value>
</data>
<data name="pictureBoxError.Location" type="System.Drawing.Point, System.Drawing">
@ -623,9 +623,6 @@
<data name="label6.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 12</value>
</data>
<data name="label6.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>560, 329</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>560, 30</value>
</data>
@ -647,204 +644,6 @@
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="labelAllocationQuantum.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelAllocationQuantum.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelAllocationQuantum.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelAllocationQuantum.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelAllocationQuantum.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 327</value>
</data>
<data name="labelAllocationQuantum.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 15</value>
</data>
<data name="labelAllocationQuantum.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="labelAllocationQuantum.Text" xml:space="preserve">
<value>増分割り当て(&amp;C):</value>
</data>
<data name="&gt;&gt;labelAllocationQuantum.Name" xml:space="preserve">
<value>labelAllocationQuantum</value>
</data>
<data name="&gt;&gt;labelAllocationQuantum.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;labelAllocationQuantum.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelAllocationQuantum.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="labelInitialAllocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelInitialAllocation.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelInitialAllocation.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelInitialAllocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelInitialAllocation.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 298</value>
</data>
<data name="labelInitialAllocation.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 15</value>
</data>
<data name="labelInitialAllocation.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="labelInitialAllocation.Text" xml:space="preserve">
<value>初回割り当て(&amp;I):</value>
</data>
<data name="&gt;&gt;labelInitialAllocation.Name" xml:space="preserve">
<value>labelInitialAllocation</value>
</data>
<data name="&gt;&gt;labelInitialAllocation.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;labelInitialAllocation.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInitialAllocation.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="initialAllocationNumericUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="initialAllocationNumericUpDown.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="initialAllocationNumericUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>139, 294</value>
</data>
<data name="initialAllocationNumericUpDown.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 3, 3</value>
</data>
<data name="initialAllocationNumericUpDown.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 23</value>
</data>
<data name="initialAllocationNumericUpDown.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="initialAllocationNumericUpDown.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Right</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.Name" xml:space="preserve">
<value>initialAllocationNumericUpDown</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="allocationQuantumNumericUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="allocationQuantumNumericUpDown.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="allocationQuantumNumericUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>139, 323</value>
</data>
<data name="allocationQuantumNumericUpDown.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 3, 3</value>
</data>
<data name="allocationQuantumNumericUpDown.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 23</value>
</data>
<data name="allocationQuantumNumericUpDown.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="allocationQuantumNumericUpDown.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Right</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.Name" xml:space="preserve">
<value>allocationQuantumNumericUpDown</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="init_alloc_units.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="init_alloc_units.Items" xml:space="preserve">
<value>GB</value>
</data>
<data name="init_alloc_units.Items1" xml:space="preserve">
<value>MB</value>
</data>
<data name="init_alloc_units.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 294</value>
</data>
<data name="init_alloc_units.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 23</value>
</data>
<data name="init_alloc_units.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;init_alloc_units.Name" xml:space="preserve">
<value>init_alloc_units</value>
</data>
<data name="&gt;&gt;init_alloc_units.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;init_alloc_units.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;init_alloc_units.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="incr_alloc_units.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="incr_alloc_units.Items" xml:space="preserve">
<value>GB</value>
</data>
<data name="incr_alloc_units.Items1" xml:space="preserve">
<value>MB</value>
</data>
<data name="incr_alloc_units.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 323</value>
</data>
<data name="incr_alloc_units.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 23</value>
</data>
<data name="incr_alloc_units.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;incr_alloc_units.Name" xml:space="preserve">
<value>incr_alloc_units</value>
</data>
<data name="&gt;&gt;incr_alloc_units.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;incr_alloc_units.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;incr_alloc_units.ZOrder" xml:space="preserve">
<value>16</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@ -876,7 +675,7 @@
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="DiskSizeNumericUpDown" Row="4" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="panel1" Row="9" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="panel2" Row="4" RowSpan="1" Column="2" ColumnSpan="2" />&lt;Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="4" />&lt;Control Name="labelAllocationQuantum" Row="7" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="labelInitialAllocation" Row="6" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="initialAllocationNumericUpDown" Row="6" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="allocationQuantumNumericUpDown" Row="7" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="init_alloc_units" Row="6" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="incr_alloc_units" Row="7" RowSpan="1" Column="2" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Absolute,139,AutoSize,0,AutoSize,0,Percent,100" />&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,29,Absolute,29,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></value>
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="DiskSizeNumericUpDown" Row="4" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="panel1" Row="9" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="panel2" Row="4" RowSpan="1" Column="2" ColumnSpan="2" />&lt;Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="4" />&lt;/Controls>&lt;Columns Styles="Absolute,139,AutoSize,0,AutoSize,0,Percent,100" />&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,2,Absolute,2,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="SrListBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
@ -950,6 +749,9 @@
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>590, 385</value>
</data>

View File

@ -542,16 +542,16 @@
</data>
<data mimetype="application/x-microsoft.net.object.bytearray.base64" name="pictureBoxError.Image" type="System.Drawing.Bitmap, System.Drawing">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAHpSURBVDhPlZNdT9RAFIan7Yq3/pSN6P/oX+JGEi4IygVcuSuisERIQXYDhMRCQjAYzBoBUfko
BAgaWRcIRJDk8JzpdFPgipM86dc875xpp+Z2dRRMCBHILfRe6IbdLR4+grgv8GTJK0jDPJRjaJg22YM5
7vXyTMfoWKel5eT6rF+Qc6RTaMIfxEMXsGMeyCaM+oGG1G+EcBGrfJab9TccwC5sI/6EdViBiu/bTjI5
1LZ11r/wrzwgV8mO/Co+bc2aFJ/IJfca5Vfy2RRkCbrT5YQaEC2yviM3q8pa/5tN2UTchivOtc55VkVe
MIFUPNtFpAGyj5it9QBBZS09ZvIlx+liu4wgf4BpUNcGZGvdol1d649ciJbKU8XH8hZpCmagZmwHaUCC
tAHfYdUGtLdm1tKAKgE1G+DLJET5gDWkb/CV9a3nZBWV7DwmZAJxDCq5gKjmBfIFeRkukqQlTCK8hwsX
cspLHLKyJ/2e/Qr2JYY9fJJPyB/hKBqXMwZOIJZoWVud5fyE4LVyWZ4jv4bOwG7vdGtzEg+yOeYR9A0P
Q8m1qgHvQKUeeKFHP93SVtbiwm7lEiH6eaoI4y5gBGEINKAE3b6d+eZW1nIhcRetvWR9+pKGEd44sZd7
z9K27/5M+eLhPX5nY64BiGvD2gP8aTAAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAelJREFUOE+V
k11P1EAUhqftirf+lI3o/+hf4kYSLgjKBVy5K6KwREhBdgOExEJCMBjMGgFR+SgECBpZFwhEkOTwnOl0
U+CKkzzp1zzvnGmn5nZ1FEwIEcgt9F7oht0tHj6CuC/wZMkrSMM8lGNomDbZgznu9fJMx+hYp6Xl5Pqs
X5BzpFNowh/EQxewYx7IJoz6gYbUb4RwEat8lpv1NxzALmwj/oR1WIGK79tOMjnUtnXWv/CvPCBXyY78
Kj5tzZoUn8gl9xrlV/LZFGQJutPlhBoQLbK+Izerylr/m03ZRNyGK861znlWRV4wgVQ820WkAbKPmK31
AEFlLT1m8iXH6WK7jCB/gGlQ1wZka92iXV3rj1yIlspTxcfyFmkKZqBmbAdpQIK0Ad9h1Qa0t2bW0oAq
ATUb4MskRPmANaRv8JX1redkFZXsPCZkAnEMKrmAqOYF8gV5GS6SpCVMIryHCxdyykscsrIn/Z79CvYl
hj18kk/IH+EoGpczBk4glmhZW53l/ITgtXJZniO/hs7Abu90a3MSD7I55hH0DQ9DybWqAe9ApR54oUc/
3dJW1uLCbuUSIfp5qgjjLmAEYQg0oATdvp355lbWciFxF629ZH36koYR3jixl3vP0rbv/kz54uE9fmdj
rgGIa8PaA/xpMAAAAABJRU5ErkJggg==
</value>
</data>
<data name="pictureBoxError.Location" type="System.Drawing.Point, System.Drawing">
@ -623,9 +623,6 @@
<data name="label6.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 12</value>
</data>
<data name="label6.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>560, 329</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>560, 30</value>
</data>
@ -647,204 +644,6 @@
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="labelAllocationQuantum.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelAllocationQuantum.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelAllocationQuantum.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelAllocationQuantum.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelAllocationQuantum.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 327</value>
</data>
<data name="labelAllocationQuantum.Size" type="System.Drawing.Size, System.Drawing">
<value>133, 15</value>
</data>
<data name="labelAllocationQuantum.TabIndex" type="System.Int32, mscorlib">
<value>14</value>
</data>
<data name="labelAllocationQuantum.Text" xml:space="preserve">
<value>增量分配(&amp;C):</value>
</data>
<data name="&gt;&gt;labelAllocationQuantum.Name" xml:space="preserve">
<value>labelAllocationQuantum</value>
</data>
<data name="&gt;&gt;labelAllocationQuantum.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;labelAllocationQuantum.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelAllocationQuantum.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="labelInitialAllocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="labelInitialAllocation.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="labelInitialAllocation.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelInitialAllocation.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelInitialAllocation.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 298</value>
</data>
<data name="labelInitialAllocation.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 15</value>
</data>
<data name="labelInitialAllocation.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
</data>
<data name="labelInitialAllocation.Text" xml:space="preserve">
<value>初始分配(&amp;I):</value>
</data>
<data name="&gt;&gt;labelInitialAllocation.Name" xml:space="preserve">
<value>labelInitialAllocation</value>
</data>
<data name="&gt;&gt;labelInitialAllocation.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;labelInitialAllocation.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelInitialAllocation.ZOrder" xml:space="preserve">
<value>12</value>
</data>
<data name="initialAllocationNumericUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="initialAllocationNumericUpDown.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="initialAllocationNumericUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>139, 294</value>
</data>
<data name="initialAllocationNumericUpDown.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 3, 3</value>
</data>
<data name="initialAllocationNumericUpDown.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 23</value>
</data>
<data name="initialAllocationNumericUpDown.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
</data>
<data name="initialAllocationNumericUpDown.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Right</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.Name" xml:space="preserve">
<value>initialAllocationNumericUpDown</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;initialAllocationNumericUpDown.ZOrder" xml:space="preserve">
<value>13</value>
</data>
<data name="allocationQuantumNumericUpDown.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="allocationQuantumNumericUpDown.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="allocationQuantumNumericUpDown.Location" type="System.Drawing.Point, System.Drawing">
<value>139, 323</value>
</data>
<data name="allocationQuantumNumericUpDown.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 3, 3, 3</value>
</data>
<data name="allocationQuantumNumericUpDown.Size" type="System.Drawing.Size, System.Drawing">
<value>105, 23</value>
</data>
<data name="allocationQuantumNumericUpDown.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
<data name="allocationQuantumNumericUpDown.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Right</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.Name" xml:space="preserve">
<value>allocationQuantumNumericUpDown</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;allocationQuantumNumericUpDown.ZOrder" xml:space="preserve">
<value>14</value>
</data>
<data name="init_alloc_units.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="init_alloc_units.Items" xml:space="preserve">
<value>GB</value>
</data>
<data name="init_alloc_units.Items1" xml:space="preserve">
<value>MB</value>
</data>
<data name="init_alloc_units.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 294</value>
</data>
<data name="init_alloc_units.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 23</value>
</data>
<data name="init_alloc_units.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;init_alloc_units.Name" xml:space="preserve">
<value>init_alloc_units</value>
</data>
<data name="&gt;&gt;init_alloc_units.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;init_alloc_units.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;init_alloc_units.ZOrder" xml:space="preserve">
<value>15</value>
</data>
<data name="incr_alloc_units.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="incr_alloc_units.Items" xml:space="preserve">
<value>GB</value>
</data>
<data name="incr_alloc_units.Items1" xml:space="preserve">
<value>MB</value>
</data>
<data name="incr_alloc_units.Location" type="System.Drawing.Point, System.Drawing">
<value>250, 323</value>
</data>
<data name="incr_alloc_units.Size" type="System.Drawing.Size, System.Drawing">
<value>49, 23</value>
</data>
<data name="incr_alloc_units.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;incr_alloc_units.Name" xml:space="preserve">
<value>incr_alloc_units</value>
</data>
<data name="&gt;&gt;incr_alloc_units.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;incr_alloc_units.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;incr_alloc_units.ZOrder" xml:space="preserve">
<value>16</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
@ -876,7 +675,7 @@
<value>0</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="DiskSizeNumericUpDown" Row="4" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="panel1" Row="9" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="panel2" Row="4" RowSpan="1" Column="2" ColumnSpan="2" />&lt;Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="4" />&lt;Control Name="labelAllocationQuantum" Row="7" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="labelInitialAllocation" Row="6" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="initialAllocationNumericUpDown" Row="6" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="allocationQuantumNumericUpDown" Row="7" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="init_alloc_units" Row="6" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="incr_alloc_units" Row="7" RowSpan="1" Column="2" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Absolute,139,AutoSize,0,AutoSize,0,Percent,100" />&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,29,Absolute,29,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></value>
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="label2" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="label1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="NameTextBox" Row="2" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="DescriptionTextBox" Row="3" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="SrListBox" Row="5" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label3" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="DiskSizeNumericUpDown" Row="4" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="panel1" Row="9" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="label4" Row="5" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="panel2" Row="4" RowSpan="1" Column="2" ColumnSpan="2" />&lt;Control Name="label6" Row="1" RowSpan="1" Column="0" ColumnSpan="4" />&lt;/Controls>&lt;Columns Styles="Absolute,139,AutoSize,0,AutoSize,0,Percent,100" />&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Percent,100,Absolute,2,Absolute,2,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="SrListBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
@ -950,6 +749,9 @@
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>4, 4, 4, 4</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>590, 385</value>
</data>

View File

@ -160,6 +160,7 @@
this.customTreeViewServers.ShowDescription = true;
this.customTreeViewServers.ShowImages = false;
this.customTreeViewServers.ShowRootLines = true;
this.customTreeViewServers.ItemCheckChanged += new System.EventHandler<System.EventArgs>(this.customTreeViewServers_ItemCheckChanged);
//
// flowLayoutPanelServerListButtons
//

View File

@ -73,7 +73,7 @@ namespace XenAdmin.Dialogs
selectSlaves(hosts);
}
private enum InvalidReasons { NONE, EMPTY_POOL_NAME, NO_MASTER };
private enum InvalidReasons { NONE, EMPTY_POOL_NAME, NO_MASTER, MAX_POOL_SIZE_EXCEEDED };
private InvalidReasons validToClose
{
get
@ -87,6 +87,14 @@ namespace XenAdmin.Dialogs
if (comboBoxServers.Items.Count <= 0)
return InvalidReasons.NO_MASTER;
Host master = getMaster();
if (master != null)
{
List<Host> slaves = getSlaves();
if (PoolJoinRules.WillExceedPoolMaxSize(master.Connection, slaves.Count))
return InvalidReasons.MAX_POOL_SIZE_EXCEEDED;
}
return InvalidReasons.NONE;
}
}
@ -118,6 +126,10 @@ namespace XenAdmin.Dialogs
buttonCreate.Enabled = false;
toolTipContainerCreate.SetToolTip(Messages.POOL_NAME_EMPTY);
break;
case InvalidReasons.MAX_POOL_SIZE_EXCEEDED:
buttonCreate.Enabled = false;
toolTipContainerCreate.SetToolTip(Messages.NEWPOOL_WILL_EXCEED_POOL_MAX_SIZE);
break;
}
}
@ -147,8 +159,8 @@ namespace XenAdmin.Dialogs
Helpers.FeatureForbidden(host, Host.RestrictCpuMasking) &&
!PoolJoinRules.FreeHostPaidMaster(host, master, false))) // in this case we can upgrade the license and then mask the CPU
{
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_CPUMASKING : Messages.UPSELL_BLURB_CPUMASKING + Messages.UPSELL_BLURB_CPUMASKING_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_CPUMASKING))
using (var dlg = new UpsellDialog(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_CPUMASKING : Messages.UPSELL_BLURB_CPUMASKING + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL))
dlg.ShowDialog(this);
return;
}
@ -402,5 +414,10 @@ namespace XenAdmin.Dialogs
{
Close();
}
private void customTreeViewServers_ItemCheckChanged(object sender, EventArgs e)
{
updateButtons();
}
}
}

32
XenAdmin/Dialogs/PropertiesDialog.cs Normal file → Executable file
View File

@ -43,6 +43,7 @@ using XenAdmin.Core;
using XenAdmin.Wizards.NewPolicyWizard;
using XenAdmin.Wizards.NewVMApplianceWizard;
using XenAdmin.Wizards.GenericPages;
using System.Linq;
namespace XenAdmin.Dialogs
{
@ -78,6 +79,8 @@ namespace XenAdmin.Dialogs
private Page_CloudConfigParameters CloudConfigParametersPage;
private SecurityEditPage SecurityEditPage;
private LivePatchingEditPage LivePatchingEditPage;
private USBEditPage usbEditPage;
private NetworkOptionsEditPage NetworkOptionsEditPage;
#endregion
private IXenObject xenObject, xenObjectBefore, xenObjectCopy;
@ -121,6 +124,7 @@ namespace XenAdmin.Dialogs
bool is_network = xenObjectCopy is XenAPI.Network;
bool is_hvm = is_vm && ((VM)xenObjectCopy).IsHVM();
bool is_template = is_vm && ((VM)xenObjectCopy).is_a_template;
bool is_in_pool = Helpers.GetPool(xenObjectCopy.Connection) != null;
bool is_pool_or_standalone = is_pool || (is_host && !is_in_pool);
@ -155,8 +159,8 @@ namespace XenAdmin.Dialogs
if (Helpers.FeatureForbidden(xenObjectCopy, Host.RestrictAlerts))
{
PerfmonAlertUpsellEditPage = new UpsellPage {Image = Properties.Resources._000_Alert2_h32bit_16, Text = Messages.ALERTS};
PerfmonAlertUpsellEditPage.SetAllTexts(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_ALERTS : Messages.UPSELL_BLURB_ALERTS + Messages.UPSELL_BLURB_ALERTS_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_ALERTS);
PerfmonAlertUpsellEditPage.SetAllTexts(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_ALERTS : Messages.UPSELL_BLURB_ALERTS + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL);
ShowTab(PerfmonAlertUpsellEditPage);
}
else
@ -170,8 +174,8 @@ namespace XenAdmin.Dialogs
if (Helpers.FeatureForbidden(xenObjectCopy, Host.RestrictAlerts))
{
PerfmonAlertOptionsUpsellEditPage = new UpsellPage {Image = Properties.Resources._000_Email_h32bit_16, Text = Messages.EMAIL_OPTIONS};
PerfmonAlertOptionsUpsellEditPage.SetAllTexts(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_ALERTS : Messages.UPSELL_BLURB_ALERTS + Messages.UPSELL_BLURB_ALERTS_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_ALERTS);
PerfmonAlertOptionsUpsellEditPage.SetAllTexts(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_ALERTS : Messages.UPSELL_BLURB_ALERTS + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL);
ShowTab(PerfmonAlertOptionsUpsellEditPage);
}
else
@ -202,6 +206,9 @@ namespace XenAdmin.Dialogs
if (is_pool_or_standalone && !Helpers.FeatureForbidden(xenObject.Connection, Host.RestrictLivePatching))
ShowTab(LivePatchingEditPage = new LivePatchingEditPage());
if (is_pool_or_standalone && !Helpers.FeatureForbidden(xenObject.Connection, Host.RestrictIGMPSnooping) && Helpers.GetMaster(pool).vSwitchNetworkBackend())
ShowTab(NetworkOptionsEditPage = new NetworkOptionsEditPage());
if (is_network)
ShowTab(editNetworkPage = new EditNetworkPage());
@ -213,8 +220,8 @@ namespace XenAdmin.Dialogs
if (Helpers.FeatureForbidden(xenObjectCopy, Host.RestrictGpu))
{
GpuUpsellEditPage = new UpsellPage { Image = Properties.Resources._000_GetMemoryInfo_h32bit_16, Text = Messages.GPU };
GpuUpsellEditPage.SetAllTexts(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_GPU : Messages.UPSELL_BLURB_GPU + Messages.UPSELL_BLURB_GPU_MORE,
InvisibleMessages.UPSELL_LEARNMOREURL_GPU);
GpuUpsellEditPage.SetAllTexts(HiddenFeatures.LinkLabelHidden ? Messages.UPSELL_BLURB_GPU : Messages.UPSELL_BLURB_GPU + Messages.UPSELL_BLURB_TRIAL,
InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL);
ShowTab(GpuUpsellEditPage);
}
else
@ -223,6 +230,12 @@ namespace XenAdmin.Dialogs
}
}
if (is_hvm && !is_template && !Helpers.FeatureForbidden(xenObjectCopy, Host.RestrictUsbPassthrough) &&
pool.Connection.Cache.Hosts.Any(host => host.PUSBs.Count > 0))
{
ShowTab(usbEditPage = new USBEditPage { VerticalTabs = verticalTabs });
}
if (is_hvm)
{
ShowTab(VMAdvancedEditPage = new VMAdvancedEditPage());
@ -505,6 +518,13 @@ namespace XenAdmin.Dialogs
GpuEditPage.ShowHideWarnings();
return;
}
if (verticalTabs.SelectedItem == usbEditPage && VMHAEditPage != null)
{
usbEditPage.SelectedPriority = VMHAEditPage.SelectedPriority;
usbEditPage.ShowHideWarnings();
return;
}
}
private void PropertiesDialog_FormClosed(object sender, FormClosedEventArgs e)

View File

@ -229,7 +229,7 @@
<value>0</value>
</data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value>
<value>Left</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>

143
XenAdmin/Dialogs/UsbUsageDialog.Designer.cs generated Executable file
View File

@ -0,0 +1,143 @@
namespace XenAdmin.Dialogs
{
partial class UsbUsageDialog
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UsbUsageDialog));
this.buttonOK = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.labelNote = new XenAdmin.Controls.Common.AutoHeightLabel();
this.tableLayoutPanelBase = new System.Windows.Forms.TableLayoutPanel();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
this.tableLayoutPanelWarning = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.labelWarning = new XenAdmin.Controls.Common.AutoHeightLabel();
this.pictureBoxAlert = new System.Windows.Forms.PictureBox();
this.tableLayoutPanelBase.SuspendLayout();
this.flowLayoutPanel1.SuspendLayout();
this.tableLayoutPanelWarning.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAlert)).BeginInit();
this.SuspendLayout();
//
// buttonOK
//
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.OK;
resources.ApplyResources(this.buttonOK, "buttonOK");
this.buttonOK.Name = "buttonOK";
this.buttonOK.UseVisualStyleBackColor = true;
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
//
// buttonCancel
//
this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.buttonCancel, "buttonCancel");
this.buttonCancel.Name = "buttonCancel";
this.buttonCancel.UseVisualStyleBackColor = true;
//
// labelNote
//
resources.ApplyResources(this.labelNote, "labelNote");
this.labelNote.Name = "labelNote";
//
// tableLayoutPanelBase
//
resources.ApplyResources(this.tableLayoutPanelBase, "tableLayoutPanelBase");
this.tableLayoutPanelBase.Controls.Add(this.flowLayoutPanel1, 0, 4);
this.tableLayoutPanelBase.Controls.Add(this.labelNote, 0, 1);
this.tableLayoutPanelBase.Controls.Add(this.tableLayoutPanelWarning, 0, 3);
this.tableLayoutPanelBase.Name = "tableLayoutPanelBase";
//
// flowLayoutPanel1
//
resources.ApplyResources(this.flowLayoutPanel1, "flowLayoutPanel1");
this.flowLayoutPanel1.Controls.Add(this.buttonCancel);
this.flowLayoutPanel1.Controls.Add(this.buttonOK);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
//
// tableLayoutPanelWarning
//
resources.ApplyResources(this.tableLayoutPanelWarning, "tableLayoutPanelWarning");
this.tableLayoutPanelWarning.Controls.Add(this.tableLayoutPanel1, 1, 0);
this.tableLayoutPanelWarning.Controls.Add(this.pictureBoxAlert, 0, 0);
this.tableLayoutPanelWarning.Name = "tableLayoutPanelWarning";
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.labelWarning, 0, 1);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// labelWarning
//
resources.ApplyResources(this.labelWarning, "labelWarning");
this.labelWarning.Name = "labelWarning";
//
// pictureBoxAlert
//
resources.ApplyResources(this.pictureBoxAlert, "pictureBoxAlert");
this.pictureBoxAlert.BackColor = System.Drawing.Color.Transparent;
this.pictureBoxAlert.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
this.pictureBoxAlert.InitialImage = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
this.pictureBoxAlert.Name = "pictureBoxAlert";
this.pictureBoxAlert.TabStop = false;
//
// UsbUsageDialog
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.tableLayoutPanelBase);
this.HelpButton = false;
this.Icon = global::XenAdmin.Properties.Resources.AppIcon;
this.Name = "UsbUsageDialog";
this.tableLayoutPanelBase.ResumeLayout(false);
this.tableLayoutPanelBase.PerformLayout();
this.flowLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanelWarning.ResumeLayout(false);
this.tableLayoutPanelWarning.PerformLayout();
this.tableLayoutPanel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBoxAlert)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button buttonOK;
private System.Windows.Forms.Button buttonCancel;
private Controls.Common.AutoHeightLabel labelNote;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanelBase;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanelWarning;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private Controls.Common.AutoHeightLabel labelWarning;
private System.Windows.Forms.PictureBox pictureBoxAlert;
}
}

View File

@ -0,0 +1,72 @@
/* Copyright (c) Citrix Systems, Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms,
* with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above
* copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the
* following disclaimer in the documentation and/or other
* materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
using System;
using System.Windows.Forms;
using XenAPI;
namespace XenAdmin.Dialogs
{
public partial class UsbUsageDialog : XenDialogBase
{
private PUSB _pusb;
public UsbUsageDialog(PUSB pusb)
{
_pusb = pusb;
InitializeComponent();
RefreshControls();
}
private void RefreshControls()
{
if (_pusb.passthrough_enabled)
{
Text = Messages.DIALOG_USB_USAGE_DISABLE_PASSTHROUGH;
labelNote.Text = Messages.DIALOG_USB_USAGE_NOTE_DENY;
buttonOK.Text = Messages.DIALOG_USB_USAGE_OKBUTTON_DISABLE;
tableLayoutPanelBase.Controls.Remove(tableLayoutPanelWarning);
}
else
{
Text = Messages.DIALOG_USB_USAGE_ENABLE_PASSTHROUGH;
labelNote.Text = Messages.DIALOG_USB_USAGE_NOTE_ALLOW;
buttonOK.Text = Messages.DIALOG_USB_USAGE_OKBUTTON_ENABLE;
}
}
private void buttonOK_Click(object sender, EventArgs e)
{
new XenAdmin.Actions.SetUsbPassthroughAction (_pusb, !_pusb.passthrough_enabled).RunAsync();
}
}
}

View File

@ -0,0 +1,483 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonOK.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonOK.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 3</value>
</data>
<data name="buttonOK.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonOK.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="buttonOK.Text" xml:space="preserve">
<value>&amp;Yes, enable passthrough</value>
</data>
<data name="&gt;&gt;buttonOK.Name" xml:space="preserve">
<value>buttonOK</value>
</data>
<data name="&gt;&gt;buttonOK.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;buttonOK.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonCancel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>319, 3</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>&amp;No</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="&gt;&gt;buttonCancel.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;buttonCancel.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelNote.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelNote.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelNote.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelNote.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="labelNote.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 15</value>
</data>
<data name="labelNote.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelNote.Text" xml:space="preserve">
<value>Are you sure that you want to enable passthrough on this device?</value>
</data>
<data name="&gt;&gt;labelNote.Name" xml:space="preserve">
<value>labelNote</value>
</data>
<data name="&gt;&gt;labelNote.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelNote.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;labelNote.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanelBase.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanelBase.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanelBase.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>RightToLeft</value>
</data>
<data name="flowLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 97</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 35</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanelWarning.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanelWarning.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="labelWarning.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarning.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarning.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 2</value>
</data>
<data name="labelWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="labelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 45</value>
</data>
<data name="labelWarning.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelWarning.Text" xml:space="preserve">
<value>Plugging in untrustworthy USB devices to your computer may put your computer at risk. USB devices with modifiable behaviour should only be assigned to trustworthy guest VMs.</value>
</data>
<data name="&gt;&gt;labelWarning.Name" xml:space="preserve">
<value>labelWarning</value>
</data>
<data name="&gt;&gt;labelWarning.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarning.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarning.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 3</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 47</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</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="labelWarning" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,2,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="pictureBoxAlert.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="pictureBoxAlert.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pictureBoxAlert.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxAlert.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 0</value>
</data>
<data name="pictureBoxAlert.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxAlert.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 22</value>
</data>
<data name="pictureBoxAlert.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxAlert.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.Name" xml:space="preserve">
<value>pictureBoxAlert</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.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;pictureBoxAlert.Parent" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanelWarning.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelWarning.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 38</value>
</data>
<data name="tableLayoutPanelWarning.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 53</value>
</data>
<data name="tableLayoutPanelWarning.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.Name" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.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;tableLayoutPanelWarning.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanelWarning.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="tableLayoutPanel1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="pictureBoxAlert" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,23,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanelBase.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelBase.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanelBase.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanelBase.RowCount" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="tableLayoutPanelBase.Size" type="System.Drawing.Size, System.Drawing">
<value>403, 135</value>
</data>
<data name="tableLayoutPanelBase.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.Name" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.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;tableLayoutPanelBase.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelBase.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="flowLayoutPanel1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelNote" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanelWarning" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,10,AutoSize,0,Absolute,10,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>403, 135</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Enable passthrough</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UsbUsageDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -0,0 +1,483 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonOK.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonOK.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 3</value>
</data>
<data name="buttonOK.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonOK.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="buttonOK.Text" xml:space="preserve">
<value>&amp;Yes, enable passthrough</value>
</data>
<data name="&gt;&gt;buttonOK.Name" xml:space="preserve">
<value>buttonOK</value>
</data>
<data name="&gt;&gt;buttonOK.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;buttonOK.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonCancel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>319, 3</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>&amp;No</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="&gt;&gt;buttonCancel.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;buttonCancel.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelNote.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelNote.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelNote.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelNote.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="labelNote.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 15</value>
</data>
<data name="labelNote.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelNote.Text" xml:space="preserve">
<value>Are you sure that you want to enable passthrough on this device?</value>
</data>
<data name="&gt;&gt;labelNote.Name" xml:space="preserve">
<value>labelNote</value>
</data>
<data name="&gt;&gt;labelNote.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelNote.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;labelNote.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanelBase.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanelBase.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanelBase.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>RightToLeft</value>
</data>
<data name="flowLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 97</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 35</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanelWarning.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanelWarning.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="labelWarning.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarning.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarning.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 2</value>
</data>
<data name="labelWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="labelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 45</value>
</data>
<data name="labelWarning.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelWarning.Text" xml:space="preserve">
<value>Plugging in untrustworthy USB devices to your computer may put your computer at risk. USB devices with modifiable behaviour should only be assigned to trustworthy guest VMs.</value>
</data>
<data name="&gt;&gt;labelWarning.Name" xml:space="preserve">
<value>labelWarning</value>
</data>
<data name="&gt;&gt;labelWarning.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarning.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarning.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 3</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 47</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</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="labelWarning" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,2,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="pictureBoxAlert.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="pictureBoxAlert.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pictureBoxAlert.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxAlert.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 0</value>
</data>
<data name="pictureBoxAlert.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxAlert.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 22</value>
</data>
<data name="pictureBoxAlert.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxAlert.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.Name" xml:space="preserve">
<value>pictureBoxAlert</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.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;pictureBoxAlert.Parent" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanelWarning.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelWarning.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 38</value>
</data>
<data name="tableLayoutPanelWarning.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 53</value>
</data>
<data name="tableLayoutPanelWarning.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.Name" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.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;tableLayoutPanelWarning.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanelWarning.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="tableLayoutPanel1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="pictureBoxAlert" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,23,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanelBase.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelBase.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanelBase.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanelBase.RowCount" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="tableLayoutPanelBase.Size" type="System.Drawing.Size, System.Drawing">
<value>403, 135</value>
</data>
<data name="tableLayoutPanelBase.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.Name" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.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;tableLayoutPanelBase.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelBase.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="flowLayoutPanel1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelNote" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanelWarning" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,10,AutoSize,0,Absolute,10,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>403, 135</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Enable passthrough</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UsbUsageDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -0,0 +1,483 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonOK.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonOK.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 3</value>
</data>
<data name="buttonOK.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonOK.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="buttonOK.Text" xml:space="preserve">
<value>&amp;Yes, enable passthrough</value>
</data>
<data name="&gt;&gt;buttonOK.Name" xml:space="preserve">
<value>buttonOK</value>
</data>
<data name="&gt;&gt;buttonOK.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;buttonOK.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonOK.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="buttonCancel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>319, 3</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="buttonCancel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>&amp;No</value>
</data>
<data name="&gt;&gt;buttonCancel.Name" xml:space="preserve">
<value>buttonCancel</value>
</data>
<data name="&gt;&gt;buttonCancel.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;buttonCancel.Parent" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;buttonCancel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="labelNote.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="labelNote.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelNote.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelNote.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelNote.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="labelNote.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 15</value>
</data>
<data name="labelNote.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="labelNote.Text" xml:space="preserve">
<value>Are you sure that you want to enable passthrough on this device?</value>
</data>
<data name="&gt;&gt;labelNote.Name" xml:space="preserve">
<value>labelNote</value>
</data>
<data name="&gt;&gt;labelNote.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelNote.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;labelNote.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanelBase.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanelBase.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanelBase.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="flowLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="flowLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="flowLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="flowLayoutPanel1.FlowDirection" type="System.Windows.Forms.FlowDirection, System.Windows.Forms">
<value>RightToLeft</value>
</data>
<data name="flowLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="flowLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 97</value>
</data>
<data name="flowLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 35</value>
</data>
<data name="flowLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Name" xml:space="preserve">
<value>flowLayoutPanel1</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;flowLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelWarning.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanelWarning.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanelWarning.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="labelWarning.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="labelWarning.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="labelWarning.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>TopLeft</value>
</data>
<data name="labelWarning.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="labelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 2</value>
</data>
<data name="labelWarning.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="labelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 45</value>
</data>
<data name="labelWarning.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="labelWarning.Text" xml:space="preserve">
<value>Plugging in untrustworthy USB devices to your computer may put your computer at risk. USB devices with modifiable behaviour should only be assigned to trustworthy guest VMs.</value>
</data>
<data name="&gt;&gt;labelWarning.Name" xml:space="preserve">
<value>labelWarning</value>
</data>
<data name="&gt;&gt;labelWarning.Type" xml:space="preserve">
<value>XenAdmin.Controls.Common.AutoHeightLabel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;labelWarning.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;labelWarning.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>26, 3</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 47</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Name" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.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;tableLayoutPanel1.Parent" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.ZOrder" xml:space="preserve">
<value>0</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="labelWarning" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,2,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="pictureBoxAlert.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<data name="pictureBoxAlert.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pictureBoxAlert.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pictureBoxAlert.Location" type="System.Drawing.Point, System.Drawing">
<value>1, 0</value>
</data>
<data name="pictureBoxAlert.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="pictureBoxAlert.Size" type="System.Drawing.Size, System.Drawing">
<value>22, 22</value>
</data>
<data name="pictureBoxAlert.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>CenterImage</value>
</data>
<data name="pictureBoxAlert.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.Name" xml:space="preserve">
<value>pictureBoxAlert</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.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;pictureBoxAlert.Parent" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;pictureBoxAlert.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanelWarning.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelWarning.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanelWarning.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 38</value>
</data>
<data name="tableLayoutPanelWarning.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanelWarning.Size" type="System.Drawing.Size, System.Drawing">
<value>397, 53</value>
</data>
<data name="tableLayoutPanelWarning.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.Name" xml:space="preserve">
<value>tableLayoutPanelWarning</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.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;tableLayoutPanelWarning.Parent" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;tableLayoutPanelWarning.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanelWarning.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="tableLayoutPanel1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="pictureBoxAlert" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,23,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="tableLayoutPanelBase.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanelBase.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanelBase.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanelBase.RowCount" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="tableLayoutPanelBase.Size" type="System.Drawing.Size, System.Drawing">
<value>403, 135</value>
</data>
<data name="tableLayoutPanelBase.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.Name" xml:space="preserve">
<value>tableLayoutPanelBase</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.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;tableLayoutPanelBase.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;tableLayoutPanelBase.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanelBase.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="flowLayoutPanel1" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="labelNote" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanelWarning" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100" /&gt;&lt;Rows Styles="Absolute,10,AutoSize,0,Absolute,10,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>96, 96</value>
</data>
<data name="$this.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>403, 135</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Enable passthrough</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UsbUsageDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -164,7 +164,7 @@
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 32</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
@ -372,6 +372,6 @@ VM のパフォーマンスを最適化するために、VCPU の数を物理 CP
<value>VcpuWarningDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>
</root>

View File

@ -164,7 +164,7 @@
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 32</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
@ -175,7 +175,7 @@
<value>pictureBox1</value>
</data>
<data name="&gt;&gt;pictureBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.PictureBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<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>tableLayoutPanel1</value>
@ -240,7 +240,7 @@ To optimize VM performance, you should reduce the number of VCPUs to less than o
<value>panel1</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
@ -273,7 +273,7 @@ To optimize VM performance, you should reduce the number of VCPUs to less than o
<value>checkBox1</value>
</data>
<data name="&gt;&gt;checkBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;checkBox1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
@ -309,7 +309,7 @@ To optimize VM performance, you should reduce the number of VCPUs to less than o
<value>btnOK</value>
</data>
<data name="&gt;&gt;btnOK.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnOK.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
@ -336,7 +336,7 @@ To optimize VM performance, you should reduce the number of VCPUs to less than o
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Type" xml:space="preserve">
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tableLayoutPanel1.Parent" xml:space="preserve">
<value>$this</value>
@ -347,7 +347,7 @@ To optimize VM performance, you should reduce the number of VCPUs to less than o
<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="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="panel1" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="checkBox1" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="btnOK" Row="2" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100,Absolute,20" /&gt;&lt;Rows Styles="Percent,100,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
@ -372,6 +372,6 @@ To optimize VM performance, you should reduce the number of VCPUs to less than o
<value>VcpuWarningDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>
</root>

View File

@ -164,7 +164,7 @@
<data name="pictureBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>32, 32</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="pictureBox1.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
@ -371,6 +371,6 @@
<value>VcpuWarningDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -1068,6 +1068,9 @@
<data name="VMSnapshotPage" xml:space="preserve">
<value>6530</value>
</data>
<data name="WarningVmDisableChangedBlockTracking" xml:space="preserve">
<value>8106</value>
</data>
<data name="WarningVmLifeCycleForceReboot" xml:space="preserve">
<value>8101</value>
</data>
@ -1149,4 +1152,7 @@
<data name="EditVMSSGeneralSettingsDialog" xml:space="preserve">
<value>6553</value>
</data>
</root>
<data name="TabPageUSB" xml:space="preserve">
<value>1020</value>
</data>
</root>

View File

@ -1068,6 +1068,9 @@
<data name="VMSnapshotPage" xml:space="preserve">
<value>6530</value>
</data>
<data name="WarningVmDisableChangedBlockTracking" xml:space="preserve">
<value>8106</value>
</data>
<data name="WarningVmLifeCycleForceReboot" xml:space="preserve">
<value>8101</value>
</data>
@ -1149,4 +1152,7 @@
<data name="EditVMSSGeneralSettingsDialog" xml:space="preserve">
<value>6553</value>
</data>
<data name="TabPageUSB" xml:space="preserve">
<value>1020</value>
</data>
</root>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -1068,6 +1068,9 @@
<data name="VMSnapshotPage" xml:space="preserve">
<value>6530</value>
</data>
<data name="WarningVmDisableChangedBlockTracking" xml:space="preserve">
<value>8106</value>
</data>
<data name="WarningVmLifeCycleForceReboot" xml:space="preserve">
<value>8101</value>
</data>
@ -1149,4 +1152,7 @@
<data name="EditVMSSGeneralSettingsDialog" xml:space="preserve">
<value>6553</value>
</data>
</root>
<data name="TabPageUSB" xml:space="preserve">
<value>1020</value>
</data>
</root>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -42,6 +42,7 @@ using XenAdmin.Network;
using XenAPI;
using XenAdmin.XenSearch;
using System.IO;
using System.Linq;
namespace XenAdmin
{
@ -91,6 +92,9 @@ namespace XenAdmin
ImageList16.Images.Add("000_PoolConnected_h32bit_16.png", XenAdmin.Properties.Resources._000_PoolConnected_h32bit_16);
ImageList16.Images.Add("pool_up_16.png", XenAdmin.Properties.Resources.pool_up_16);
ImageList16.Images.Add("000_Pool_h32bit_16-w-alert.png", Properties.Resources._000_Pool_h32bit_16_w_alert);
ImageList16.Images.Add("000_Server_h32bit_16-w-alert.png", Properties.Resources._000_Server_h32bit_16_w_alert);
ImageList16.Images.Add("000_Storage_h32bit_16.png", XenAdmin.Properties.Resources._000_Storage_h32bit_16);
ImageList16.Images.Add("000_StorageBroken_h32bit_16.png", XenAdmin.Properties.Resources._000_StorageBroken_h32bit_16);
ImageList16.Images.Add("000_StorageDefault_h32bit_16.png", XenAdmin.Properties.Resources._000_StorageDefault_h32bit_16);
@ -411,6 +415,10 @@ namespace XenAdmin
if (host_is_live)
{
if (host.IsFreeLicenseOrExpired())
{
return Icons.ServerUnlicensed;
}
if (host.HasCrashDumps())
{
return Icons.HostHasCrashDumps;
@ -444,11 +452,13 @@ namespace XenAdmin
public static Icons GetIconFor(Pool pool)
{
return pool.Connection.IsConnected
? pool.IsPoolFullyUpgraded()
? Icons.PoolConnected
: Icons.PoolNotFullyUpgraded
: Icons.HostDisconnected;
if (!pool.Connection.IsConnected)
return Icons.HostDisconnected;
if (pool.Connection.Cache.Hosts.Any(h => h.IsFreeLicenseOrExpired()))
return Icons.PoolUnlicensed;
if (pool.IsPoolFullyUpgraded())
return Icons.PoolConnected;
return Icons.PoolNotFullyUpgraded;
}
public static Icons GetIconFor(XenAPI.Network network)
@ -634,6 +644,7 @@ namespace XenAdmin
public static Image _000_paused_h32bit_16 = Properties.Resources._000_paused_h32bit_16;
public static Image _000_Paused_h32bit_24 = Properties.Resources._000_Paused_h32bit_24;
public static Image _000_Pool_h32bit_16 = Properties.Resources._000_Pool_h32bit_16;
public static Image _000_Pool_h32bit_16_w_alert = Properties.Resources._000_Pool_h32bit_16_w_alert;
public static Image _000_PoolConnected_h32bit_16 = Properties.Resources._000_PoolConnected_h32bit_16;
public static Image _000_PoolNew_h32bit_16 = Properties.Resources._000_PoolNew_h32bit_16;
public static Image _000_PoolNew_h32bit_24 = Properties.Resources._000_PoolNew_h32bit_24;
@ -648,6 +659,7 @@ namespace XenAdmin
public static Image _000_ScheduledVMsnapshotDiskOnly_h32bit_32 = Properties.Resources._000_ScheduledVMsnapshotDiskOnly_h32bit_32;
public static Image _000_Search_h32bit_16 = Properties.Resources._000_Search_h32bit_16;
public static Image _000_Server_h32bit_16 = Properties.Resources._000_Server_h32bit_16;
public static Image _000_Server_h32bit_16_w_alert = Properties.Resources._000_Server_h32bit_16_w_alert;
public static Image _000_ServerDisconnected_h32bit_16 = Properties.Resources._000_ServerDisconnected_h32bit_16;
public static Image _000_ServerErrorFile_h32bit_16 = Properties.Resources._000_ServerErrorFile_h32bit_16;
public static Image _000_ServerHome_h32bit_16 = Properties.Resources._000_ServerHome_h32bit_16;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
XenAdmin/Images/usb_16.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

View File

@ -96,9 +96,10 @@ namespace XenAdmin
this.TitleBackPanel = new XenAdmin.Controls.GradientPanel.GradientPanel();
this.TitleIcon = new System.Windows.Forms.PictureBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.TitleLabel = new System.Windows.Forms.Label();
this.LicenseStatusTitleLabel = new System.Windows.Forms.Label();
this.toolTipContainer1 = new XenAdmin.Controls.ToolTipContainer();
this.loggedInLabel1 = new XenAdmin.Controls.LoggedInLabel();
this.TitleLabel = new System.Windows.Forms.Label();
this.ToolStrip = new XenAdmin.Controls.ToolStripEx();
this.backButton = new System.Windows.Forms.ToolStripSplitButton();
this.forwardButton = new System.Windows.Forms.ToolStripSplitButton();
@ -285,6 +286,8 @@ namespace XenAdmin
this.StatusStrip = new System.Windows.Forms.StatusStrip();
this.statusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.statusProgressBar = new System.Windows.Forms.ToolStripProgressBar();
this.TabPageUSB = new System.Windows.Forms.TabPage();
this.disableCbtToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@ -366,6 +369,7 @@ namespace XenAdmin
this.TheTabControl.Controls.Add(this.TabPageSearch);
this.TheTabControl.Controls.Add(this.TabPageDockerProcess);
this.TheTabControl.Controls.Add(this.TabPageDockerDetails);
this.TheTabControl.Controls.Add(this.TabPageUSB);
this.TheTabControl.Name = "TheTabControl";
this.TheTabControl.SelectedIndex = 4;
//
@ -556,10 +560,26 @@ namespace XenAdmin
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.toolTipContainer1, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.TitleLabel, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.LicenseStatusTitleLabel, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.toolTipContainer1, 3, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// TitleLabel
//
resources.ApplyResources(this.TitleLabel, "TitleLabel");
this.TitleLabel.AutoEllipsis = true;
this.TitleLabel.ForeColor = System.Drawing.SystemColors.HighlightText;
this.TitleLabel.Name = "TitleLabel";
this.TitleLabel.UseMnemonic = false;
//
// LicenseStatusTitleLabel
//
resources.ApplyResources(this.LicenseStatusTitleLabel, "LicenseStatusTitleLabel");
this.LicenseStatusTitleLabel.ForeColor = System.Drawing.SystemColors.HighlightText;
this.LicenseStatusTitleLabel.Name = "LicenseStatusTitleLabel";
this.LicenseStatusTitleLabel.UseMnemonic = false;
//
// toolTipContainer1
//
resources.ApplyResources(this.toolTipContainer1, "toolTipContainer1");
@ -573,14 +593,6 @@ namespace XenAdmin
this.loggedInLabel1.Connection = null;
this.loggedInLabel1.Name = "loggedInLabel1";
//
// TitleLabel
//
resources.ApplyResources(this.TitleLabel, "TitleLabel");
this.TitleLabel.AutoEllipsis = true;
this.TitleLabel.ForeColor = System.Drawing.SystemColors.HighlightText;
this.TitleLabel.Name = "TitleLabel";
this.TitleLabel.UseMnemonic = false;
//
// ToolStrip
//
resources.ApplyResources(this.ToolStrip, "ToolStrip");
@ -1308,6 +1320,7 @@ namespace XenAdmin
this.snapshotToolStripMenuItem,
this.convertToTemplateToolStripMenuItem,
this.exportToolStripMenuItem,
this.disableCbtToolStripMenuItem,
this.enablePVSReadcachingToolStripMenuItem,
this.disablePVSReadcachingToolStripMenuItem,
this.toolStripMenuItem12,
@ -1879,6 +1892,17 @@ namespace XenAdmin
this.statusProgressBar.Name = "statusProgressBar";
this.statusProgressBar.Overflow = System.Windows.Forms.ToolStripItemOverflow.Never;
//
// TabPageUSB
//
resources.ApplyResources(this.TabPageUSB, "TabPageUSB");
this.TabPageUSB.Name = "TabPageUSB";
this.TabPageUSB.UseVisualStyleBackColor = true;
// disableCbtToolStripMenuItem
//
this.disableCbtToolStripMenuItem.Command = new XenAdmin.Commands.DisableChangedBlockTrackingCommand();
this.disableCbtToolStripMenuItem.Name = "disableCbtToolStripMenuItem";
resources.ApplyResources(this.disableCbtToolStripMenuItem, "disableCbtToolStripMenuItem");
//
// MainWindow
//
resources.ApplyResources(this, "$this");
@ -2146,6 +2170,9 @@ namespace XenAdmin
private CommandToolStripMenuItem controlDomainMemoryToolStripMenuItem;
private CommandToolStripMenuItem enablePVSReadcachingToolStripMenuItem;
private CommandToolStripMenuItem disablePVSReadcachingToolStripMenuItem;
private TabPage TabPageUSB;
private CommandToolStripMenuItem disableCbtToolStripMenuItem;
private Label LicenseStatusTitleLabel;
}
}

93
XenAdmin/MainWindow.cs Normal file → Executable file
View File

@ -103,6 +103,7 @@ namespace XenAdmin
internal readonly PvsPage PvsPage = new PvsPage();
internal readonly DockerProcessPage DockerProcessPage = new DockerProcessPage();
internal readonly DockerDetailsPage DockerDetailsPage = new DockerDetailsPage();
internal readonly UsbPage UsbPage = new UsbPage();
private ActionBase statusBarAction = null;
public ActionBase StatusBarAction { get { return statusBarAction; } }
@ -172,6 +173,7 @@ namespace XenAdmin
components.Add(SearchPage);
components.Add(DockerProcessPage);
components.Add(DockerDetailsPage);
components.Add(UsbPage);
AddTabContents(VMStoragePage, TabPageStorage);
AddTabContents(SrStoragePage, TabPageSR);
@ -196,6 +198,7 @@ namespace XenAdmin
AddTabContents(SearchPage, TabPageSearch);
AddTabContents(DockerProcessPage, TabPageDockerProcess);
AddTabContents(DockerDetailsPage, TabPageDockerDetails);
AddTabContents(UsbPage, TabPageUSB);
#endregion
@ -1124,6 +1127,9 @@ namespace XenAdmin
case "edition":
case "license_server":
case "license_params":
UpdateHeader();
UpdateToolbars();
break;
case "other_config":
// other_config may contain HideFromXenCenter
UpdateToolbars();
@ -1412,7 +1418,7 @@ namespace XenAdmin
bool show_home = SelectionManager.Selection.Count == 1 && SelectionManager.Selection[0].Value == null;
// The upsell pages use the first selected XenObject: but they're only shown if there is only one selected object (see calls to ShowTab() below).
bool dmc_upsell = Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictDMC);
bool ha_upsell = Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictHA);
bool ha_upsell = Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictHA) && (selectionPool != null && !selectionPool.ha_enabled);
bool wlb_upsell = Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictWLB);
bool ad_upsell = Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictAD);
bool is_connected = selectionConnection != null && selectionConnection.IsConnected;
@ -1445,8 +1451,8 @@ namespace XenAdmin
ShowTab(TabPageDockerDetails, !multi && !SearchMode && isDockerContainerSelected);
bool isPoolOrLiveStandaloneHost = isPoolSelected || (isHostSelected && isHostLive && selectionPool == null);
ShowTab(TabPageGPU, !multi && !SearchMode && ((isHostSelected && isHostLive) || isPoolOrLiveStandaloneHost) && Helpers.ClearwaterSp1OrGreater(selectionConnection) && !Helpers.FeatureForbidden(selectionConnection, Host.RestrictGpu));
ShowTab(TabPageUSB, !multi && !SearchMode && (isHostSelected && isHostLive && (((Host)SelectionManager.Selection.First).PUSBs.Count > 0)) && !Helpers.FeatureForbidden(selectionConnection, Host.RestrictUsbPassthrough));
pluginManager.SetSelectedXenObject(SelectionManager.Selection.FirstAsXenObject);
@ -1884,6 +1890,10 @@ namespace XenAdmin
{
NetworkPage.XenObject = SelectionManager.Selection.FirstAsXenObject;
}
else if (t == TabPageUSB)
{
UsbPage.XenObject = SelectionManager.Selection.FirstAsXenObject as Host;
}
else if (t == TabPageNICs)
{
NICPage.Host = SelectionManager.Selection.First as Host;
@ -2074,7 +2084,7 @@ namespace XenAdmin
/// </summary>
public enum Tab
{
Overview, Home, Settings, Storage, Network, Console, CvmConsole, Performance, NICs, SR, DockerProcess, DockerDetails
Overview, Home, Settings, Storage, Network, Console, CvmConsole, Performance, NICs, SR, DockerProcess, DockerDetails, USB
}
public void SwitchToTab(Tab tab)
@ -2117,6 +2127,9 @@ namespace XenAdmin
case Tab.DockerDetails:
TheTabControl.SelectedTab = TabPageDockerDetails;
break;
case Tab.USB:
TheTabControl.SelectedTab = TabPageUSB;
break;
default:
throw new NotImplementedException();
}
@ -2507,6 +2520,8 @@ namespace XenAdmin
return "TabPageDockerDetails" + modelObj;
if (TheTabControl.SelectedTab == TabPagePvs)
return "TabPagePvs" + modelObj;
if (TheTabControl.SelectedTab == TabPageUSB)
return "TabPageUSB" + modelObj;
return "TabPageUnknown";
}
@ -2846,6 +2861,8 @@ namespace XenAdmin
/// </summary>
private void UpdateHeader()
{
bool licenseStatusTitleLabelHandled = false;
if (navigationPane.currentMode == NavigationPane.NavigationMode.Notifications)
return;
@ -2858,6 +2875,10 @@ namespace XenAdmin
{
IXenObject xenObject = SelectionManager.Selection[0].XenObject;
TitleLabel.Text = xenObject.NameWithLocation();
UpdateLicenseStatusTitleLabel(xenObject);
licenseStatusTitleLabelHandled = true;
TitleIcon.Image = Images.GetImage16For(xenObject);
// When in folder view only show the logged in label if it is clear to which connection the object belongs (most likely pools and hosts)
@ -2872,6 +2893,68 @@ namespace XenAdmin
TitleIcon.Image = Properties.Resources.Logo;
loggedInLabel1.Connection = null;
}
if (!licenseStatusTitleLabelHandled)
ResetLicenseStatusTitleLabel();
SetTitleLabelMaxWidth();
}
private void UpdateLicenseStatusTitleLabel(IXenObject xenObject)
{
if (xenObject is Pool)
{
var pool = xenObject as Pool;
if (pool.Connection != null && pool.Connection.CacheIsPopulated)
{
if (pool.IsFreeLicenseOrExpired)
{
LicenseStatusTitleLabel.Text = Messages.MAINWINDOW_HEADER_UNLICENSED;
LicenseStatusTitleLabel.ForeColor = Color.Red;
}
else
{
LicenseStatusTitleLabel.Text = string.Format(Messages.MAINWINDOW_HEADER_LICENSED_WITH, pool.LicenseString());
LicenseStatusTitleLabel.ForeColor = Program.TitleBarForeColor;
}
}
}
else if (xenObject is Host)
{
var host = xenObject as Host;
if (host.Connection != null && host.Connection.CacheIsPopulated)
{
if (host.IsFreeLicenseOrExpired())
{
LicenseStatusTitleLabel.Text = Messages.MAINWINDOW_HEADER_UNLICENSED;
LicenseStatusTitleLabel.ForeColor = Color.Red;
}
else
{
LicenseStatusTitleLabel.Text = string.Format(Messages.MAINWINDOW_HEADER_LICENSED_WITH, Helpers.GetFriendlyLicenseName(host));
LicenseStatusTitleLabel.ForeColor = Program.TitleBarForeColor;
}
}
}
else
{
ResetLicenseStatusTitleLabel();
}
}
private void ResetLicenseStatusTitleLabel()
{
if (string.IsNullOrEmpty(LicenseStatusTitleLabel.Text))
return;
LicenseStatusTitleLabel.Text = string.Empty;
}
private void SetTitleLabelMaxWidth()
{
TitleLabel.MaximumSize = new Size(tableLayoutPanel1.Width - loggedInLabel1.Width - LicenseStatusTitleLabel.Width - 6, TitleLabel.Height);
}
private void UpdateViewMenu(NavigationPane.NavigationMode mode)
@ -2962,6 +3045,7 @@ namespace XenAdmin
{
if (mode == NavigationPane.NavigationMode.Notifications)
{
ResetLicenseStatusTitleLabel();
TheTabControl.Visible = false;
}
else
@ -3352,6 +3436,7 @@ namespace XenAdmin
mainWindowResized = true;
}
SetSplitterDistance();
SetTitleLabelMaxWidth();
}
private void SetSplitterDistance()
@ -3388,6 +3473,8 @@ namespace XenAdmin
TabPage t = TheTabControl.SelectedTab;
if (t == TabPageConsole)
ConsolePanel.UpdateRDPResolution();
SetTitleLabelMaxWidth();
}
}
}

139
XenAdmin/MainWindow.ja.resx Normal file → Executable file
View File

@ -876,6 +876,33 @@
<data name="&gt;&gt;TabPageDockerDetails.ZOrder" xml:space="preserve">
<value>23</value>
</data>
<data name="TabPageUSB.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TabPageUSB.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TabPageUSB.Size" type="System.Drawing.Size, System.Drawing">
<value>753, 592</value>
</data>
<data name="TabPageUSB.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="TabPageUSB.Text" xml:space="preserve">
<value>USB</value>
</data>
<data name="&gt;&gt;TabPageUSB.Name" xml:space="preserve">
<value>TabPageUSB</value>
</data>
<data name="&gt;&gt;TabPageUSB.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TabPageUSB.Parent" xml:space="preserve">
<value>TheTabControl</value>
</data>
<data name="&gt;&gt;TabPageUSB.ZOrder" xml:space="preserve">
<value>24</value>
</data>
<data name="TheTabControl.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 8.25pt</value>
</data>
@ -1027,7 +1054,76 @@
<value>Top, Bottom, Left, Right</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
<value>4</value>
</data>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="TitleLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="TitleLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="TitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 16</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TitleLabel.Name" xml:space="preserve">
<value>TitleLabel</value>
</data>
<data name="&gt;&gt;TitleLabel.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;TitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;TitleLabel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LicenseStatusTitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="LicenseStatusTitleLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LicenseStatusTitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="LicenseStatusTitleLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LicenseStatusTitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 3</value>
</data>
<data name="LicenseStatusTitleLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="LicenseStatusTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 16</value>
</data>
<data name="LicenseStatusTitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.Name" xml:space="preserve">
<value>LicenseStatusTitleLabel</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.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;LicenseStatusTitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="toolTipContainer1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1095,33 +1191,6 @@
<data name="&gt;&gt;toolTipContainer1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="TitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>722, 20</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TitleLabel.Name" xml:space="preserve">
<value>TitleLabel</value>
</data>
<data name="&gt;&gt;TitleLabel.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;TitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;TitleLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 0</value>
</data>
@ -1147,7 +1216,7 @@
<value>1</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="toolTipContainer1" Row="0" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,100,AutoSize,0" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="LicenseStatusTitleLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="toolTipContainer1" Row="0" RowSpan="1" Column="3" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
</data>
<data name="TitleBackPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 3</value>
@ -2316,6 +2385,12 @@
<data name="exportToolStripMenuItem.Text" xml:space="preserve">
<value>エクスポート(&amp;E)...</value>
</data>
<data name="disableCbtToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 22</value>
</data>
<data name="disableCbtToolStripMenuItem.Text" xml:space="preserve">
<value>変更ブロック追跡の無効化(&amp;I)</value>
</data>
<data name="enablePVSReadcachingToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
</data>
@ -3885,6 +3960,12 @@
<data name="&gt;&gt;statusProgressBar.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;disableCbtToolStripMenuItem.Name" xml:space="preserve">
<value>disableCbtToolStripMenuItem</value>
</data>
<data name="&gt;&gt;disableCbtToolStripMenuItem.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandToolStripMenuItem, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainWindow</value>
</data>

View File

@ -876,6 +876,33 @@
<data name="&gt;&gt;TabPageDockerDetails.ZOrder" xml:space="preserve">
<value>23</value>
</data>
<data name="TabPageUSB.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TabPageUSB.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TabPageUSB.Size" type="System.Drawing.Size, System.Drawing">
<value>753, 592</value>
</data>
<data name="TabPageUSB.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="TabPageUSB.Text" xml:space="preserve">
<value>USB</value>
</data>
<data name="&gt;&gt;TabPageUSB.Name" xml:space="preserve">
<value>TabPageUSB</value>
</data>
<data name="&gt;&gt;TabPageUSB.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TabPageUSB.Parent" xml:space="preserve">
<value>TheTabControl</value>
</data>
<data name="&gt;&gt;TabPageUSB.ZOrder" xml:space="preserve">
<value>24</value>
</data>
<data name="TheTabControl.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 8.25pt</value>
</data>
@ -1027,7 +1054,76 @@
<value>Top, Bottom, Left, Right</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
<value>4</value>
</data>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="TitleLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="TitleLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="TitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 16</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TitleLabel.Name" xml:space="preserve">
<value>TitleLabel</value>
</data>
<data name="&gt;&gt;TitleLabel.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;TitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;TitleLabel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LicenseStatusTitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="LicenseStatusTitleLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LicenseStatusTitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="LicenseStatusTitleLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LicenseStatusTitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 3</value>
</data>
<data name="LicenseStatusTitleLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="LicenseStatusTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 16</value>
</data>
<data name="LicenseStatusTitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.Name" xml:space="preserve">
<value>LicenseStatusTitleLabel</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.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;LicenseStatusTitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="toolTipContainer1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1093,34 +1189,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;toolTipContainer1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="TitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>719, 20</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TitleLabel.Name" xml:space="preserve">
<value>TitleLabel</value>
</data>
<data name="&gt;&gt;TitleLabel.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;TitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;TitleLabel.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 0</value>
@ -1147,7 +1216,7 @@
<value>1</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="toolTipContainer1" Row="0" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100,AutoSize,0" /&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="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="LicenseStatusTitleLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="toolTipContainer1" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /&gt;&lt;Rows Styles="Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="TitleBackPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
@ -1777,13 +1846,13 @@
<value>163, 5</value>
</metadata>
<data name="ShowToolbarMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>147, 22</value>
<value>146, 22</value>
</data>
<data name="ShowToolbarMenuItem.Text" xml:space="preserve">
<value>Show &amp;Toolbar</value>
</data>
<data name="ToolBarContextMenu.Size" type="System.Drawing.Size, System.Drawing">
<value>148, 26</value>
<value>147, 26</value>
</data>
<data name="&gt;&gt;ToolBarContextMenu.Name" xml:space="preserve">
<value>ToolBarContextMenu</value>
@ -2239,124 +2308,130 @@
<value>Ctrl+N</value>
</data>
<data name="NewVmToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="NewVmToolStripMenuItem.Text" xml:space="preserve">
<value>&amp;New VM...</value>
</data>
<data name="startShutdownToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="startShutdownToolStripMenuItem.Text" xml:space="preserve">
<value>&amp;Start/Shut down</value>
</data>
<data name="resumeOnToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="resumeOnToolStripMenuItem.Text" xml:space="preserve">
<value>Res&amp;ume on Server</value>
</data>
<data name="relocateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="relocateToolStripMenuItem.Text" xml:space="preserve">
<value>M&amp;igrate to Server</value>
</data>
<data name="startOnHostToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="startOnHostToolStripMenuItem.Text" xml:space="preserve">
<value>Start &amp;on Server</value>
</data>
<data name="toolStripSeparator20.Size" type="System.Drawing.Size, System.Drawing">
<value>242, 6</value>
<value>241, 6</value>
</data>
<data name="assignSnapshotScheduleToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="assignSnapshotScheduleToolStripMenuItem.Text" xml:space="preserve">
<value>Assign to Snaps&amp;hot Schedule...</value>
</data>
<data name="assignToVirtualApplianceToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="assignToVirtualApplianceToolStripMenuItem.Text" xml:space="preserve">
<value>Assign to &amp;vApp</value>
</data>
<data name="toolStripMenuItem9.Size" type="System.Drawing.Size, System.Drawing">
<value>242, 6</value>
<value>241, 6</value>
</data>
<data name="copyVMtoSharedStorageMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="copyVMtoSharedStorageMenuItem.Text" xml:space="preserve">
<value>&amp;Copy VM</value>
</data>
<data name="MoveVMToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="MoveVMToolStripMenuItem.Text" xml:space="preserve">
<value>&amp;Move VM</value>
</data>
<data name="snapshotToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="snapshotToolStripMenuItem.Text" xml:space="preserve">
<value>Ta&amp;ke a Snapshot</value>
</data>
<data name="convertToTemplateToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="convertToTemplateToolStripMenuItem.Text" xml:space="preserve">
<value>Convert to &amp;Template</value>
</data>
<data name="exportToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="exportToolStripMenuItem.Text" xml:space="preserve">
<value>&amp;Export...</value>
</data>
<data name="disableCbtToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 22</value>
</data>
<data name="disableCbtToolStripMenuItem.Text" xml:space="preserve">
<value>D&amp;isable Changed Block Tracking</value>
</data>
<data name="enablePVSReadcachingToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="disablePVSReadcachingToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="toolStripMenuItem12.Size" type="System.Drawing.Size, System.Drawing">
<value>242, 6</value>
<value>241, 6</value>
</data>
<data name="installToolsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="installToolsToolStripMenuItem.Text" xml:space="preserve">
<value>Inst&amp;all [XenServer product] Tools</value>
</data>
<data name="sendCtrlAltDelToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="sendCtrlAltDelToolStripMenuItem.Text" xml:space="preserve">
<value>Send Ctrl+&amp;Alt+Del</value>
</data>
<data name="toolStripSeparator5.Size" type="System.Drawing.Size, System.Drawing">
<value>242, 6</value>
<value>241, 6</value>
</data>
<data name="uninstallToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="uninstallToolStripMenuItem.Text" xml:space="preserve">
<value>&amp;Delete VM</value>
</data>
<data name="toolStripSeparator10.Size" type="System.Drawing.Size, System.Drawing">
<value>242, 6</value>
<value>241, 6</value>
</data>
<data name="pluginItemsPlaceHolderToolStripMenuItem4.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="pluginItemsPlaceHolderToolStripMenuItem4.Text" xml:space="preserve">
<value>PluginItemsPlaceHolder</value>
</data>
<data name="VMPropertiesToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
<value>244, 22</value>
</data>
<data name="VMPropertiesToolStripMenuItem.Text" xml:space="preserve">
<value>P&amp;roperties</value>
@ -3885,6 +3960,12 @@
<data name="&gt;&gt;statusProgressBar.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;disableCbtToolStripMenuItem.Name" xml:space="preserve">
<value>disableCbtToolStripMenuItem</value>
</data>
<data name="&gt;&gt;disableCbtToolStripMenuItem.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandToolStripMenuItem, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainWindow</value>
</data>

139
XenAdmin/MainWindow.zh-CN.resx Normal file → Executable file
View File

@ -876,6 +876,33 @@
<data name="&gt;&gt;TabPageDockerDetails.ZOrder" xml:space="preserve">
<value>23</value>
</data>
<data name="TabPageUSB.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value>
</data>
<data name="TabPageUSB.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="TabPageUSB.Size" type="System.Drawing.Size, System.Drawing">
<value>753, 592</value>
</data>
<data name="TabPageUSB.TabIndex" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="TabPageUSB.Text" xml:space="preserve">
<value>USB</value>
</data>
<data name="&gt;&gt;TabPageUSB.Name" xml:space="preserve">
<value>TabPageUSB</value>
</data>
<data name="&gt;&gt;TabPageUSB.Type" xml:space="preserve">
<value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;TabPageUSB.Parent" xml:space="preserve">
<value>TheTabControl</value>
</data>
<data name="&gt;&gt;TabPageUSB.ZOrder" xml:space="preserve">
<value>24</value>
</data>
<data name="TheTabControl.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 8.25pt</value>
</data>
@ -1027,7 +1054,76 @@
<value>Top, Bottom, Left, Right</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
<value>4</value>
</data>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="TitleLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="TitleLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="TitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 16</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TitleLabel.Name" xml:space="preserve">
<value>TitleLabel</value>
</data>
<data name="&gt;&gt;TitleLabel.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;TitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;TitleLabel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="LicenseStatusTitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="LicenseStatusTitleLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LicenseStatusTitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="LicenseStatusTitleLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="LicenseStatusTitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 3</value>
</data>
<data name="LicenseStatusTitleLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="LicenseStatusTitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 16</value>
</data>
<data name="LicenseStatusTitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.Name" xml:space="preserve">
<value>LicenseStatusTitleLabel</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.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;LicenseStatusTitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;LicenseStatusTitleLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="toolTipContainer1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -1095,33 +1191,6 @@
<data name="&gt;&gt;toolTipContainer1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Verdana, 9.75pt, style=Bold</value>
</data>
<data name="TitleLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>722, 20</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;TitleLabel.Name" xml:space="preserve">
<value>TitleLabel</value>
</data>
<data name="&gt;&gt;TitleLabel.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;TitleLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;TitleLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>28, 0</value>
</data>
@ -1147,7 +1216,7 @@
<value>1</value>
</data>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="toolTipContainer1" Row="0" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,100,AutoSize,0" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
<value>&lt;?xml version="1.0" encoding="utf-16"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="TitleLabel" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="LicenseStatusTitleLabel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="toolTipContainer1" Row="0" RowSpan="1" Column="3" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" />&lt;Rows Styles="Percent,100" />&lt;/TableLayoutSettings></value>
</data>
<data name="TitleBackPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 3</value>
@ -2316,6 +2385,12 @@
<data name="exportToolStripMenuItem.Text" xml:space="preserve">
<value>导出(&amp;E)...</value>
</data>
<data name="disableCbtToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>244, 22</value>
</data>
<data name="disableCbtToolStripMenuItem.Text" xml:space="preserve">
<value>禁用更改块跟踪(&amp;I)</value>
</data>
<data name="enablePVSReadcachingToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>245, 22</value>
</data>
@ -3885,6 +3960,12 @@
<data name="&gt;&gt;statusProgressBar.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;disableCbtToolStripMenuItem.Name" xml:space="preserve">
<value>disableCbtToolStripMenuItem</value>
</data>
<data name="&gt;&gt;disableCbtToolStripMenuItem.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandToolStripMenuItem, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainWindow</value>
</data>

Some files were not shown because too many files have changed in this diff Show More