removed licencing, crashdumpmenu, upsell pages, hidden feature configuration, pvs

This commit is contained in:
Alexander Schulz 2024-01-01 17:33:57 +01:00
parent 21cfe7a57a
commit f586cc26ba
137 changed files with 376 additions and 25511 deletions

View File

@ -1,119 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Dialogs;
namespace XenAdmin.Alerts
{
public class LicenseAlert : Alert
{
private string hostName;
private DateTime nowDate;
private DateTime expiryDate;
public LicenseAlert(string hostname, DateTime now, DateTime expiry)
{
hostName = hostname;
nowDate = now;
expiryDate = expiry;
_timestamp = now;
}
public LicenseManagerLauncher LicenseManagerLauncher { get; set; }
#region Overrides of Alert
public override string Title => Messages.NOTICE_LICENCE_TITLE;
public override string Description
{
get
{
if (expiryDate < nowDate)
return string.Format(Messages.MAINWINDOW_EXPIRE_MESSAGE_TOO_LATE, BrandManager.ProductBrand, hostName.Ellipsise(25));
string timeleft = GetLicenseTimeLeftString(expiryDate.Subtract(nowDate), false);
return string.Format(Messages.MAINWINDOW_EXPIRE_MESSAGE, BrandManager.ProductBrand, hostName.Ellipsise(25), timeleft);
}
}
public override AlertPriority Priority => expiryDate < nowDate
? AlertPriority.Priority2
: AlertPriority.Priority3;
public override string AppliesTo => hostName;
public override string FixLinkText => Messages.LAUNCH_LICENSE_MANAGER;
public override Action FixLinkAction
{
get
{
return () =>
{
if (LicenseManagerLauncher != null)
{
LicenseManagerLauncher.Parent = Program.MainWindow;
LicenseManagerLauncher.LaunchIfRequired(false, ConnectionsManager.XenConnections);
}
};
}
}
public override string HelpID => "LicenseManager";
#endregion
#region Private methods
/// <summary>
/// Returns a string similar to "x days", "x minutes", "x hours", "x months"
/// where x is the time till the host's license expires/needs reactivating.
/// </summary>
/// <param name="timeTillExpire"></param>
/// <param name="capAtTenYears">Set to true will return Messages.UNLIMITED for timespans over 3653 days</param>
/// <returns></returns>
public static string GetLicenseTimeLeftString(TimeSpan timeTillExpire, bool capAtTenYears)
{
if (timeTillExpire.Ticks < 0)
return "";
if (capAtTenYears && LicenseStatus.IsInfinite(timeTillExpire))
return Messages.UNLIMITED;
return timeTillExpire.FuzzyTime();
}
#endregion
}
}

View File

@ -354,13 +354,10 @@ namespace XenAdmin.Alerts
case Message.MessageType.HA_XAPI_HEALTHCHECK_APPROACHING_TIMEOUT:
return () => new HAConfigureCommand(Program.MainWindow, XenObject.Connection).Run();
case Message.MessageType.LICENSE_EXPIRES_SOON:
case Message.MessageType.LICENSE_DOES_NOT_SUPPORT_POOLING:
return () => Program.OpenURL(HiddenFeatures.LinkLabelHidden ? null : InvisibleMessages.LICENSE_BUY_URL);
case Message.MessageType.VBD_QOS_FAILED:
case Message.MessageType.VCPU_QOS_FAILED:
case Message.MessageType.VIF_QOS_FAILED:
return () => Program.MainWindow.LaunchLicensePicker("");
//case Message.MessageType.VBD_QOS_FAILED:
//case Message.MessageType.VCPU_QOS_FAILED:
//case Message.MessageType.VIF_QOS_FAILED:
// return () => Program.MainWindow.LaunchLicensePicker("");
case Message.MessageType.MULTIPATH_PERIODIC_ALERT:
return Program.ViewLogFiles;

View File

@ -131,17 +131,7 @@ namespace XenAdmin.Commands
}
}
// Are there any hosts which are forbidden from masking their CPUs for licensing reasons?
// If so, we need to show upsell.
Host coordinator = Helpers.GetCoordinator(_pool);
if (null != _hosts.Find(host =>
!PoolJoinRules.CompatibleCPUs(host, coordinator) &&
Helpers.FeatureForbidden(host, Host.RestrictCpuMasking) &&
!PoolJoinRules.FreeHostPaidCoordinator(host, coordinator, false))) // in this case we can upgrade the license and then mask the CPU
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_CPUMASKING, Parent);
return;
}
// Get permission for any fix-ups:
// 1) Licensing free hosts

View File

@ -1,72 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAdmin.Network;
using XenAdmin.Wizards.BugToolWizard;
using XenAPI;
namespace XenAdmin.Commands
{
internal class BugToolCommand : 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 BugToolCommand()
{
}
public BugToolCommand(IMainWindow mainWindow)
: base(mainWindow)
{
}
protected override void RunCore(SelectedItemCollection selection)
{
if (selection != null && selection.AllItemsAre<IXenObject>(x => x is Host || x is Pool))
MainWindowCommandInterface.ShowForm(typeof(BugToolWizard), selection.AsXenObjects<IXenObject>().ToArray());
else
MainWindowCommandInterface.ShowForm(typeof(BugToolWizard));
}
protected override bool CanRunCore(SelectedItemCollection selection)
{
foreach (IXenConnection xenConnection in ConnectionsManager.XenConnectionsCopy)
{
if (xenConnection.IsConnected)
{
return true;
}
}
return false;
}
}
}

View File

@ -514,9 +514,7 @@ namespace XenAdmin.Commands
items.AddIfEnabled(new RebootHostCommand(mainWindow, selection));
items.AddIfEnabled(new ShutDownHostCommand(mainWindow, selection));
items.AddIfEnabled(new RestartToolstackCommand(mainWindow, selection));
items.AddSeparator();
items.AddIfEnabled(new RemoveHostCrashDumpsCommand(mainWindow, selection));
items.AddSeparator();
var cmd = new RemoveHostFromPoolCommand(mainWindow, selection);
if (cmd.CanRun())
@ -578,8 +576,7 @@ namespace XenAdmin.Commands
items.AddIfEnabled(new PowerOnHostCommand(mainWindow, selection));
items.AddIfEnabled(new RestartToolstackCommand(mainWindow, selection));
items.AddSeparator();
items.AddIfEnabled(new RemoveHostCrashDumpsCommand(mainWindow, selection));
items.AddSeparator();
items.AddIfEnabled(new DisconnectHostCommand(mainWindow, selection));
items.AddIfEnabled(new HostReconnectAsCommand(mainWindow, selection));

View File

@ -51,7 +51,7 @@ namespace XenAdmin.Commands
: base(mainWindow, selection)
{ }
public CrossPoolMigrateCommand(IMainWindow mainWindow, IEnumerable<SelectedItem> selection, Host preSelectedHost, bool resumeAfter=false)
public CrossPoolMigrateCommand(IMainWindow mainWindow, IEnumerable<SelectedItem> selection, Host preSelectedHost, bool resumeAfter = false)
: base(mainWindow, selection)
{
this.preSelectedHost = preSelectedHost;
@ -82,15 +82,8 @@ namespace XenAdmin.Commands
{
var con = selection.GetConnectionOfFirstItem();
if (Helpers.FeatureForbidden(con, Host.RestrictCrossPoolMigrate))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_CPM, Parent);
}
else
{
var wizard = new CrossPoolMigrateWizard(con, selection, preSelectedHost, WizardMode.Migrate, _resumeAfter);
MainWindowCommandInterface.ShowPerConnectionWizard(con, wizard);
}
var wizard = new CrossPoolMigrateWizard(con, selection, preSelectedHost, WizardMode.Migrate, _resumeAfter);
MainWindowCommandInterface.ShowPerConnectionWizard(con, wizard);
}
protected override Host GetHost(VM vm)
@ -121,7 +114,7 @@ namespace XenAdmin.Commands
if (preselectedHost != null)
{
var vms = new List<VM> {vm};
var vms = new List<VM> { vm };
if (new ResidentHostIsSameAsSelectionFilter(preselectedHost, vms).FailureFound(out failureReason))
return false;

View File

@ -57,16 +57,8 @@ namespace XenAdmin.Commands
{
var con = selection.GetConnectionOfFirstItem();
if (Helpers.FeatureForbidden(con, Host.RestrictCrossPoolMigrate))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_CPM, Parent);
}
else
{
MainWindowCommandInterface.ShowPerConnectionWizard(con,
new CrossPoolMigrateWizard(con, selection, preSelectedHost, GetWizardMode(selection)));
}
MainWindowCommandInterface.ShowPerConnectionWizard(con,
new CrossPoolMigrateWizard(con, selection, preSelectedHost, GetWizardMode(selection)));
}
protected override bool CanRun(VM vm)

View File

@ -65,66 +65,62 @@ namespace XenAdmin.Commands
{
}
public DRConfigureCommand(IMainWindow mainWindow, IXenObject selection)
public DRConfigureCommand(IMainWindow mainWindow, IXenObject selection)
: base(mainWindow, selection)
{
}
protected override void RunCore(SelectedItemCollection selection)
{
var pool = Helpers.GetPoolOfOne(selection.FirstAsXenObject.Connection);
protected override void RunCore(SelectedItemCollection selection)
{
var pool = Helpers.GetPoolOfOne(selection.FirstAsXenObject.Connection);
if (pool != null)
{
if (Helpers.FeatureForbidden(pool.Connection, Host.RestrictDR))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_DR, Parent);
}
else
{
using (DRConfigureDialog dlog = new DRConfigureDialog(pool))
{
if (dlog.ShowDialog() == DialogResult.OK && (dlog.SRtoEnable.Count > 0 || dlog.SRtoDisable.Count > 0))
{
var actions = new List<AsyncAction>();
if (pool != null)
{
using (DRConfigureDialog dlog = new DRConfigureDialog(pool))
{
if (dlog.ShowDialog() == DialogResult.OK && (dlog.SRtoEnable.Count > 0 || dlog.SRtoDisable.Count > 0))
{
var actions = new List<AsyncAction>();
foreach (SR sr in dlog.SRtoDisable.Values)
{
SR curSr = sr;
var action = new DelegatedAsyncAction(pool.Connection,
String.Format(Messages.ACTION_DR_DISABLING_ON, sr.Name()), Messages.ACTION_DR_DISABLING, Messages.ACTION_DR_DISABLED,
s => SR.disable_database_replication(s, curSr.opaque_ref)) {Pool = pool};
actions.Add(action);
}
foreach (SR sr in dlog.SRtoEnable.Values)
{
SR curSr = sr;
var action = new DelegatedAsyncAction(pool.Connection,
String.Format(Messages.ACTION_DR_ENABLING_ON, sr.Name()), Messages.ACTION_DR_ENABLING, Messages.ACTION_DR_ENABLED,
s => SR.enable_database_replication(s, curSr.opaque_ref)) { Pool = pool };
actions.Add(action);
}
foreach (SR sr in dlog.SRtoDisable.Values)
{
SR curSr = sr;
var action = new DelegatedAsyncAction(pool.Connection,
String.Format(Messages.ACTION_DR_DISABLING_ON, sr.Name()), Messages.ACTION_DR_DISABLING, Messages.ACTION_DR_DISABLED,
s => SR.disable_database_replication(s, curSr.opaque_ref))
{ Pool = pool };
actions.Add(action);
}
RunMultipleActions(actions, Messages.ACTION_DR_CONFIGURING, string.Empty, string.Empty, true);
}
}
}
}
}
foreach (SR sr in dlog.SRtoEnable.Values)
{
SR curSr = sr;
var action = new DelegatedAsyncAction(pool.Connection,
String.Format(Messages.ACTION_DR_ENABLING_ON, sr.Name()), Messages.ACTION_DR_ENABLING, Messages.ACTION_DR_ENABLED,
s => SR.enable_database_replication(s, curSr.opaque_ref))
{ Pool = pool };
actions.Add(action);
}
RunMultipleActions(actions, Messages.ACTION_DR_CONFIGURING, string.Empty, string.Empty, true);
}
}
}
}
protected override bool CanRunCore(SelectedItemCollection selection)
{
return selection.FirstAsXenObject != null && selection.FirstAsXenObject.Connection != null && selection.FirstAsXenObject.Connection.IsConnected
&& (selection.PoolAncestor != null || selection.HostAncestor != null); //CA-61207: this check ensures there's no cross-pool selection
&& (selection.PoolAncestor != null || selection.HostAncestor != null); //CA-61207: this check ensures there's no cross-pool selection
}
public override string ContextMenuText
{
get
{
return Messages.DR_CONFIGURE_AMP;
return Messages.DR_CONFIGURE_AMP;
}
}
}

View File

@ -77,15 +77,8 @@ namespace XenAdmin.Commands
var pool = Helpers.GetPoolOfOne(selection.FirstAsXenObject.Connection);
if (pool != null)
{
if (Helpers.FeatureForbidden(pool.Connection, Host.RestrictDR))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_DR, Parent);
}
else
{
_wizard = new DRFailoverWizard(pool, DRWizardType.Dryrun);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
_wizard = new DRFailoverWizard(pool, DRWizardType.Dryrun);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
}

View File

@ -77,15 +77,8 @@ namespace XenAdmin.Commands
var pool = Helpers.GetPoolOfOne(selection.FirstAsXenObject.Connection);
if (pool != null)
{
if (Helpers.FeatureForbidden(pool.Connection, Host.RestrictDR))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_DR, Parent);
}
else
{
_wizard = new DRFailoverWizard(pool, DRWizardType.Failback);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
_wizard = new DRFailoverWizard(pool, DRWizardType.Failback);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
}

View File

@ -73,32 +73,25 @@ namespace XenAdmin.Commands
protected override void RunCore(SelectedItemCollection selection)
{
var pool = Helpers.GetPoolOfOne(selection.FirstAsXenObject.Connection);
if (pool != null)
{
if (Helpers.FeatureForbidden(pool.Connection, Host.RestrictDR))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_DR, Parent);
}
else
{
_wizard = new DRFailoverWizard(pool, DRWizardType.Failover);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
_wizard = new DRFailoverWizard(pool, DRWizardType.Failover);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
}
protected override bool CanRunCore(SelectedItemCollection selection)
{
return selection.Count==1 && selection.FirstAsXenObject != null && selection.FirstAsXenObject.Connection != null;
return selection.Count == 1 && selection.FirstAsXenObject != null && selection.FirstAsXenObject.Connection != null;
}
public override string ContextMenuText
{
get
{
return Messages.DR_FAILOVER_AMP;
return Messages.DR_FAILOVER_AMP;
}
}
}

View File

@ -74,22 +74,15 @@ namespace XenAdmin.Commands
var pool = Helpers.GetPoolOfOne(selection.FirstAsXenObject.Connection);
if (pool != null)
{
if (Helpers.FeatureForbidden(pool.Connection, Host.RestrictDR))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_DR, Parent);
}
else
{
_wizard = new DRFailoverWizard(pool);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
_wizard = new DRFailoverWizard(pool);
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, _wizard);
}
}
protected override bool CanRunCore(SelectedItemCollection selection)
{
return selection.FirstAsXenObject != null && selection.FirstAsXenObject.Connection != null && selection.FirstAsXenObject.Connection.IsConnected
&& (selection.PoolAncestor != null || selection.HostAncestor != null); //CA-61207: this check ensures there's no cross-pool selection
return selection.FirstAsXenObject != null && selection.FirstAsXenObject.Connection != null && selection.FirstAsXenObject.Connection.IsConnected
&& (selection.PoolAncestor != null || selection.HostAncestor != null); //CA-61207: this check ensures there's no cross-pool selection
}
public override string ContextMenuText

View File

@ -87,11 +87,7 @@ namespace XenAdmin.Commands
if (pool == null)
return;
if (Helpers.FeatureForbidden(pool, Host.RestrictHA))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_HA, Parent);
}
else if (pool.ha_enabled)
if (pool.ha_enabled)
{
if (pool.ha_statefiles.All(sf => pool.Connection.Resolve(new XenRef<VDI>(sf)) == null))//empty gives true, which is correct
{
@ -200,7 +196,7 @@ namespace XenAdmin.Commands
}
// Confirm the user wants to disable HA
using (var dlg = new NoIconDialog(string.Format(Messages.HA_DISABLE_QUERY,
using (var dlg = new NoIconDialog(string.Format(Messages.HA_DISABLE_QUERY,
Helpers.GetName(pool).Ellipsise(30)),
ThreeButtonDialog.ButtonYes, ThreeButtonDialog.ButtonNo)
{
@ -268,7 +264,7 @@ namespace XenAdmin.Commands
if (!pool.IsVisible())
return Messages.HA_STANDALONE_SERVER;
Host coordinator = Helpers.GetCoordinator(pool.Connection);
if (coordinator == null)
return string.Format(Messages.POOL_COORDINATOR_GONE, BrandManager.BrandConsole);

View File

@ -60,11 +60,7 @@ namespace XenAdmin.Commands
{
var con = selection.GetConnectionOfFirstItem();
if (Helpers.FeatureForbidden(con, Host.RestrictConversion))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_CONVERSION, Parent);
}
else if (!con.Session.IsLocalSuperuser && !Registry.DontSudo && con.Session.Roles.All(r => r.name_label != Role.MR_ROLE_POOL_ADMIN))
if (!con.Session.IsLocalSuperuser && !Registry.DontSudo && con.Session.Roles.All(r => r.name_label != Role.MR_ROLE_POOL_ADMIN))
{
var currentRoles = con.Session.Roles;
currentRoles.Sort();

View File

@ -60,15 +60,7 @@ namespace XenAdmin.Commands
{
List<VDI> vdis = selection.AsXenObjects<VDI>();
bool featureForbidden = vdis.TrueForAll(vdi => Helpers.FeatureForbidden(vdi.Connection, Host.RestrictCrossPoolMigrate));
if (featureForbidden)
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_MIGRATE_VDI, Parent);
}
else
{
new MigrateVirtualDiskDialog(selection.FirstAsXenObject.Connection, vdis).Show(Program.MainWindow);
}
new MigrateVirtualDiskDialog(selection.FirstAsXenObject.Connection, vdis).Show(Program.MainWindow);
}
protected override bool CanRunCore(SelectedItemCollection selection)

View File

@ -1,96 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Dialogs;
using XenAdmin.Wizards.BugToolWizard;
using XenAPI;
namespace XenAdmin.Commands
{
/// <summary>
/// Removes the crash-dumps from the selected host.
/// </summary>
internal class RemoveHostCrashDumpsCommand : 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 RemoveHostCrashDumpsCommand()
{
}
public RemoveHostCrashDumpsCommand(IMainWindow mainWindow, IEnumerable<SelectedItem> selection)
: base(mainWindow, selection)
{
}
public RemoveHostCrashDumpsCommand(IMainWindow mainWindow, Host host)
: base(mainWindow, host)
{
}
protected override void RunCore(SelectedItemCollection selection)
{
Host host = selection[0].HostAncestor;
using (var dialog = new WarningDialog(string.Format(Messages.REMOVE_CRASHDUMP_WARNING, host.Name().Ellipsise(30)),
new ThreeButtonDialog.TBDButton(Messages.SERVER_STATUS_REPORT, DialogResult.Ignore, ThreeButtonDialog.ButtonType.CANCEL, true),
new ThreeButtonDialog.TBDButton(Messages.REMOVE_FILES, DialogResult.OK, ThreeButtonDialog.ButtonType.ACCEPT),
ThreeButtonDialog.ButtonCancel))
{
var result = dialog.ShowDialog(Parent);
if (result == DialogResult.OK)
new DestroyHostCrashDumpAction(host).RunAsync();
else if (result == DialogResult.Ignore)
new BugToolWizard(host).Show();
}
}
protected override bool CanRunCore(SelectedItemCollection selection)
{
if (selection.Count == 1)
{
Host hostAncestor = selection[0].HostAncestor;
return hostAncestor != null && hostAncestor.HasCrashDumps();
}
return false;
}
public override string MenuText => Messages.MAINWINDOW_REMOVE_HOST_CRASHDUMPS;
public override string ContextMenuText => Messages.MAINWINDOW_REMOVE_HOST_CRASHDUMPS_CONTEXT_MENU;
}
}

View File

@ -81,6 +81,14 @@ namespace XenAdmin.Commands
/// </summary>
public void BindTo(ICommandControl control, IMainWindow mainWindow)
{
if (control.Command == null)
{
if (control is ToolStripMenuItem)
{
throw new Exception("Menu has no command: " + ((ToolStripMenuItem)control).Name);
}
}
((ICommand)control.Command).SetMainWindow(mainWindow);
control.SelectionBroadcaster = this;
}
@ -97,7 +105,7 @@ namespace XenAdmin.Commands
/// Gets the current selection which will be used by listening <see cref="CommandToolStripMenuItem"/>s and
/// <see cref="CommandToolStripButton"/>s.
/// </summary>
public abstract SelectedItemCollection Selection { get;}
public abstract SelectedItemCollection Selection { get; }
public abstract void RefreshSelection();

View File

@ -70,10 +70,7 @@ namespace XenAdmin.Commands
var pool = Helpers.GetPoolOfOne(selection.FirstAsXenObject.Connection);
if (pool != null)
{
if (Helpers.FeatureForbidden(pool.Connection, VMGroup<T>.FeatureRestricted))
UpsellDialog.ShowUpsellDialog(VMGroup<T>.UpsellBlurb, Parent);
else
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, VMGroup<T>.ManageGroupsDialog(pool));
this.MainWindowCommandInterface.ShowPerConnectionWizard(pool.Connection, VMGroup<T>.ManageGroupsDialog(pool));
}
}

View File

@ -61,17 +61,6 @@ namespace XenAdmin.Commands
new ViewWorkloadReportsCommand(MainWindowCommandInterface, selection).CanRun();
}
protected bool IsLicensedFeature(SelectedItemCollection selection)
{
if (Helpers.FeatureForbidden(selection[0].XenObject, Host.RestrictWLB))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_WLB, Parent);
return false;
}
return true;
}
public override string MenuText => Messages.WLB_COMMAND_MENU_ITEM;
}
@ -89,9 +78,6 @@ namespace XenAdmin.Commands
protected override void RunCore(SelectedItemCollection selection)
{
if (!IsLicensedFeature(selection))
return;
using (var dialog = new WarningDialog(Messages.WLB_DISCONNECT_SERVER,
ThreeButtonDialog.ButtonYes, ThreeButtonDialog.ButtonNo))
if (dialog.ShowDialog(Program.MainWindow) == DialogResult.Yes)
@ -136,9 +122,6 @@ namespace XenAdmin.Commands
protected override void RunCore(SelectedItemCollection selection)
{
if (!IsLicensedFeature(selection))
return;
var wlbReports = new WorkloadReports(_reportFile, _run)
{
Pool = selection[0].PoolAncestor,

View File

@ -50,12 +50,10 @@ namespace XenAdmin.Controls
public string WarningMessage { private get; set; }
public string LinkText { set => helperLink.Text = value; }
public Uri LinkUri { set; private get; }
public bool HelperLinkVisible { set => helperLink.Visible = value; }
public DeprecationBanner()
{
InitializeComponent();
HelperLinkVisible = !Core.HiddenFeatures.LinkLabelHidden;
//LinkUri = new Uri(InvisibleMessages.DEPRECATION_URL);
Visible = false;
}

View File

@ -1,88 +0,0 @@
namespace XenAdmin.Controls
{
partial class UpsellPage
{
/// <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 Component 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(UpsellPage));
this.LearnMoreButton = new System.Windows.Forms.Button();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.OKButton = new System.Windows.Forms.Button();
this.Blurb = new XenAdmin.Controls.Common.AutoHeightLabel();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// LearnMoreButton
//
resources.ApplyResources(this.LearnMoreButton, "LearnMoreButton");
this.LearnMoreButton.Name = "LearnMoreButton";
this.LearnMoreButton.UseVisualStyleBackColor = true;
this.LearnMoreButton.Click += new System.EventHandler(this.LearnMoreButton_Clicked);
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.Blurb, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.LearnMoreButton, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.OKButton, 2, 1);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// OKButton
//
resources.ApplyResources(this.OKButton, "OKButton");
this.OKButton.Name = "OKButton";
this.OKButton.UseVisualStyleBackColor = true;
this.OKButton.Click += new System.EventHandler(this.OKButton_Click);
//
// Blurb
//
resources.ApplyResources(this.Blurb, "Blurb");
this.tableLayoutPanel1.SetColumnSpan(this.Blurb, 3);
this.Blurb.Name = "Blurb";
//
// UpsellPage
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.tableLayoutPanel1);
this.DoubleBuffered = true;
this.Name = "UpsellPage";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Button LearnMoreButton;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
internal System.Windows.Forms.Button OKButton;
private XenAdmin.Controls.Common.AutoHeightLabel Blurb;
}
}

View File

@ -1,120 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Core;
using XenAdmin.SettingsPanels;
using XenAPI;
namespace XenAdmin.Controls
{
public partial class UpsellPage : UserControl, IEditPage
{
public UpsellPage()
{
InitializeComponent();
LearnMoreButton.Visible = !HiddenFeatures.LearnMoreButtonHidden;
}
public void EnableOkButton()
{
OKButton.Visible = true;
}
public string BlurbText
{
set => Blurb.Text = HiddenFeatures.LinkLabelHidden
? value
: value + string.Format(Messages.UPSELL_BLURB_TRIAL, BrandManager.ProductBrand);
}
private void LearnMoreButton_Clicked(object sender, EventArgs e)
{
NavigateTo(InvisibleMessages.UPSELL_LEARNMOREURL_TRIAL);
}
private void NavigateTo(string url)
{
if (url == null)
return;
Program.OpenURL(url);
}
#region IEditPage Members
public AsyncAction SaveSettings()
{
return null;
}
public void SetXenObjects(IXenObject orig, IXenObject clone)
{
}
public bool ValidToSave => true;
public void ShowLocalValidationMessages()
{
}
public void HideLocalValidationMessages()
{
}
public void Cleanup()
{
}
public bool HasChanged => false;
#region IVerticalTab Members
public string SubText => Messages.XENSERVER_UPGRADE_REQUIRED;
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Image Image { get; set; } = Images.StaticImages.Logo; //serving as default value; never really shown
#endregion
#endregion
private void OKButton_Click(object sender, EventArgs e)
{
ParentForm?.Close();
}
}
}

View File

@ -1,279 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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=2.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>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="LearnMoreButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="LearnMoreButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="LearnMoreButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 26</value>
</data>
<data name="LearnMoreButton.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="LearnMoreButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LearnMoreButton.Text" xml:space="preserve">
<value>詳細情報(&amp;L)</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Name" xml:space="preserve">
<value>LearnMoreButton</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;LearnMoreButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="Blurb.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="Blurb.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="Blurb.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="Blurb.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="Blurb.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 20</value>
</data>
<data name="Blurb.Size" type="System.Drawing.Size, System.Drawing">
<value>329, 1</value>
</data>
<data name="Blurb.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="Blurb.Text" xml:space="preserve">
<value>autoHeightLabel1</value>
</data>
<data name="&gt;&gt;Blurb.Name" xml:space="preserve">
<value>Blurb</value>
</data>
<data name="&gt;&gt;Blurb.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;Blurb.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;Blurb.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="OKButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="OKButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="OKButton.Location" type="System.Drawing.Point, System.Drawing">
<value>253, 26</value>
</data>
<data name="OKButton.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 23</value>
</data>
<data name="OKButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="OKButton.Text" xml:space="preserve">
<value>後で(&amp;A)</value>
</data>
<data name="OKButton.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;OKButton.Name" xml:space="preserve">
<value>OKButton</value>
</data>
<data name="&gt;&gt;OKButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;OKButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;OKButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>335, 110</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>5</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=2.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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="Blurb" Row="0" RowSpan="1" Column="0" ColumnSpan="3" />&lt;Control Name="LearnMoreButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="OKButton" Row="1" RowSpan="1" Column="2" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0" />&lt;Rows Styles="AutoSize,0,AutoSize,0,Percent,100" />&lt;/TableLayoutSettings></value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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.Size" type="System.Drawing.Size, System.Drawing">
<value>335, 110</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,279 +0,0 @@
<?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=2.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>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LearnMoreButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="LearnMoreButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="LearnMoreButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 39</value>
</data>
<data name="LearnMoreButton.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="LearnMoreButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LearnMoreButton.Text" xml:space="preserve">
<value>&amp;Learn More</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Name" xml:space="preserve">
<value>LearnMoreButton</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;LearnMoreButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="Blurb.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="Blurb.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="Blurb.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="Blurb.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="Blurb.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 20</value>
</data>
<data name="Blurb.Size" type="System.Drawing.Size, System.Drawing">
<value>329, 13</value>
</data>
<data name="Blurb.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="Blurb.Text" xml:space="preserve">
<value>autoHeightLabel1</value>
</data>
<data name="&gt;&gt;Blurb.Name" xml:space="preserve">
<value>Blurb</value>
</data>
<data name="&gt;&gt;Blurb.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;Blurb.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;Blurb.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="OKButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="OKButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="OKButton.Location" type="System.Drawing.Point, System.Drawing">
<value>253, 39</value>
</data>
<data name="OKButton.Size" type="System.Drawing.Size, System.Drawing">
<value>79, 23</value>
</data>
<data name="OKButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="OKButton.Text" xml:space="preserve">
<value>L&amp;ater</value>
</data>
<data name="OKButton.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;OKButton.Name" xml:space="preserve">
<value>OKButton</value>
</data>
<data name="&gt;&gt;OKButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;OKButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;OKButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>335, 110</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>5</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=2.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="Blurb" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;Control Name="LearnMoreButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="OKButton" Row="1" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,Percent,100" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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.Size" type="System.Drawing.Size, System.Drawing">
<value>335, 110</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,279 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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=2.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>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="LearnMoreButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="LearnMoreButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="LearnMoreButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 26</value>
</data>
<data name="LearnMoreButton.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 23</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="LearnMoreButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LearnMoreButton.Text" xml:space="preserve">
<value>了解更多(&amp;L)</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Name" xml:space="preserve">
<value>LearnMoreButton</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LearnMoreButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;LearnMoreButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="Blurb.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="Blurb.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="Blurb.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="Blurb.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="Blurb.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 20</value>
</data>
<data name="Blurb.Size" type="System.Drawing.Size, System.Drawing">
<value>329, 1</value>
</data>
<data name="Blurb.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="Blurb.Text" xml:space="preserve">
<value>autoHeightLabel1</value>
</data>
<data name="&gt;&gt;Blurb.Name" xml:space="preserve">
<value>Blurb</value>
</data>
<data name="&gt;&gt;Blurb.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;Blurb.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;Blurb.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="OKButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="OKButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="OKButton.Location" type="System.Drawing.Point, System.Drawing">
<value>253, 26</value>
</data>
<data name="OKButton.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 23</value>
</data>
<data name="OKButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="OKButton.Text" xml:space="preserve">
<value>以后再说(&amp;A)</value>
</data>
<data name="OKButton.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;OKButton.Name" xml:space="preserve">
<value>OKButton</value>
</data>
<data name="&gt;&gt;OKButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;OKButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;OKButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>335, 110</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>5</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=2.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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="Blurb" Row="0" RowSpan="1" Column="0" ColumnSpan="3" />&lt;Control Name="LearnMoreButton" Row="1" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="OKButton" Row="1" RowSpan="1" Column="2" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Percent,100,AutoSize,0" />&lt;Rows Styles="AutoSize,0,AutoSize,0,Percent,100" />&lt;/TableLayoutSettings></value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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.Size" type="System.Drawing.Size, System.Drawing">
<value>335, 110</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,112 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.
*/
namespace XenAdmin.Core
{
public class HiddenFeatures
{
internal static bool CPSOptimizationHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(CPS_OPTIMIZATION_HIDDEN); }
}
internal static bool RDPPollingHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(RDP_POLLING_HIDDEN); }
}
internal static bool LearnMoreButtonHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(LEARN_MORE_HIDDEN); }
}
internal static bool LinkLabelHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(LINK_LABEL_HIDDEN); }
}
internal static bool ToolStripMenuItemHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(TOOL_STRIP_MENU_ITEM_HIDDEN); }
}
internal static bool CrossServerPrivateNetworkHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(CROSS_SERVER_PRIVATE_NETWORK_HIDDEN); }
}
internal static bool CopyrightHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(COPYRIGHT_HIDDEN); }
}
internal static bool UploadOptionHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(UPLOAD_OPTION_HIDDEN); }
}
internal static bool LicenseNagVisible
{
get
{ return Registry.AdditionalFeatures != null && Registry.AdditionalFeatures.Contains(LICENSE_NAG); }
}
internal static bool LicenseOperationsHidden
{
get
{ return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(LICENSE_OPERATIONS_HIDDEN); }
}
internal static bool WindowsUpdateHidden
{
get { return Registry.HiddenFeatures != null && Registry.HiddenFeatures.Contains(WINDOWS_UPDATE_HIDDEN); }
}
private const string CPS_OPTIMIZATION_HIDDEN = "cps_optimization";
private const string RDP_POLLING_HIDDEN = "rdp_polling";
private const string LEARN_MORE_HIDDEN = "learn_more";
private const string LINK_LABEL_HIDDEN = "link_label";
private const string TOOL_STRIP_MENU_ITEM_HIDDEN = "tool_strip_menu_item";
private const string CROSS_SERVER_PRIVATE_NETWORK_HIDDEN = "cross_server_private_network";
private const string COPYRIGHT_HIDDEN = "copyright";
private const string UPLOAD_OPTION_HIDDEN = "upload_option";
private const string LICENSE_NAG = "license_nag";
private const string LICENSE_OPERATIONS_HIDDEN = "license_operations";
private const string WINDOWS_UPDATE_HIDDEN = "windows_update";
}
}

View File

@ -31,12 +31,9 @@ namespace XenAdmin.Dialogs
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutDialog));
this.OkButton = new System.Windows.Forms.Button();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.LicenseDetailsTextBox = new System.Windows.Forms.TextBox();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.label2 = new System.Windows.Forms.Label();
this.licenseDetailsLabel = new System.Windows.Forms.Label();
this.VersionLabel = new System.Windows.Forms.Label();
this.showAgainCheckBox = new System.Windows.Forms.CheckBox();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
@ -55,24 +52,13 @@ namespace XenAdmin.Dialogs
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.BackColor = System.Drawing.Color.White;
this.tableLayoutPanel1.Controls.Add(this.LicenseDetailsTextBox, 1, 5);
this.tableLayoutPanel1.Controls.Add(this.linkLabel1, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.label2, 1, 2);
this.tableLayoutPanel1.Controls.Add(this.licenseDetailsLabel, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.VersionLabel, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.showAgainCheckBox, 1, 6);
this.tableLayoutPanel1.Controls.Add(this.OkButton, 1, 7);
this.tableLayoutPanel1.Controls.Add(this.pictureBox1, 0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// LicenseDetailsTextBox
//
this.LicenseDetailsTextBox.BackColor = System.Drawing.SystemColors.Window;
this.LicenseDetailsTextBox.Cursor = System.Windows.Forms.Cursors.Default;
resources.ApplyResources(this.LicenseDetailsTextBox, "LicenseDetailsTextBox");
this.LicenseDetailsTextBox.Name = "LicenseDetailsTextBox";
this.LicenseDetailsTextBox.ReadOnly = true;
//
// linkLabel1
//
resources.ApplyResources(this.linkLabel1, "linkLabel1");
@ -86,25 +72,12 @@ namespace XenAdmin.Dialogs
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Name = "label2";
//
// licenseDetailsLabel
//
resources.ApplyResources(this.licenseDetailsLabel, "licenseDetailsLabel");
this.licenseDetailsLabel.BackColor = System.Drawing.Color.Transparent;
this.licenseDetailsLabel.Name = "licenseDetailsLabel";
//
// VersionLabel
//
resources.ApplyResources(this.VersionLabel, "VersionLabel");
this.VersionLabel.BackColor = System.Drawing.Color.Transparent;
this.VersionLabel.Name = "VersionLabel";
//
// showAgainCheckBox
//
resources.ApplyResources(this.showAgainCheckBox, "showAgainCheckBox");
this.showAgainCheckBox.Name = "showAgainCheckBox";
this.showAgainCheckBox.UseVisualStyleBackColor = true;
this.showAgainCheckBox.CheckedChanged += new System.EventHandler(this.showAgainCheckBox_CheckedChanged);
//
// pictureBox1
//
this.tableLayoutPanel1.SetColumnSpan(this.pictureBox1, 3);
@ -140,8 +113,5 @@ namespace XenAdmin.Dialogs
private System.Windows.Forms.Button OkButton;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label licenseDetailsLabel;
private System.Windows.Forms.TextBox LicenseDetailsTextBox;
private System.Windows.Forms.CheckBox showAgainCheckBox;
}
}

View File

@ -52,16 +52,6 @@ namespace XenAdmin.Dialogs
VersionLabel.Text += string.Format(Messages.COMMON_CRITERIA_TEXT, BrandManager.ProductBrand);
label2.Text = BrandManager.Copyright;
label2.Visible = !HiddenFeatures.CopyrightHidden;
licenseDetailsLabel.Text = string.Format(licenseDetailsLabel.Text, BrandManager.ProductBrand);
showAgainCheckBox.Text = string.Format(showAgainCheckBox.Text, BrandManager.BrandConsole);
showAgainCheckBox.Checked = Properties.Settings.Default.ShowAboutDialog;
var showLicenseNag = HiddenFeatures.LicenseNagVisible;
LicenseDetailsTextBox.Text = showLicenseNag ? GetLicenseDetails() : "";
licenseDetailsLabel.Visible = LicenseDetailsTextBox.Visible = showLicenseNag;
showAgainCheckBox.Visible = showLicenseNag;
}
protected override void OnLoad(EventArgs e)
@ -105,15 +95,6 @@ namespace XenAdmin.Dialogs
return string.Join("\r\n", companies);
}
private void showAgainCheckBox_CheckedChanged(object sender, EventArgs e)
{
if (Properties.Settings.Default.ShowAboutDialog != showAgainCheckBox.Checked)
{
Properties.Settings.Default.ShowAboutDialog = showAgainCheckBox.Checked;
Settings.TrySaveSettings();
}
}
private void AboutDialog_FormClosed(object sender, FormClosedEventArgs e)
{
_theLegalDialog?.Dispose();

View File

@ -129,7 +129,7 @@
<value>NoControl</value>
</data>
<data name="OkButton.Location" type="System.Drawing.Point, System.Drawing">
<value>333, 288</value>
<value>333, 164</value>
</data>
<data name="OkButton.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
@ -151,7 +151,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;OkButton.ZOrder" xml:space="preserve">
<value>6</value>
<value>3</value>
</data>
<data name="tableLayoutPanel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -162,36 +162,6 @@
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="LicenseDetailsTextBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="LicenseDetailsTextBox.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 194</value>
</data>
<data name="LicenseDetailsTextBox.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="LicenseDetailsTextBox.ScrollBars" type="System.Windows.Forms.ScrollBars, System.Windows.Forms">
<value>Both</value>
</data>
<data name="LicenseDetailsTextBox.Size" type="System.Drawing.Size, System.Drawing">
<value>396, 54</value>
</data>
<data name="LicenseDetailsTextBox.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="&gt;&gt;LicenseDetailsTextBox.Name" xml:space="preserve">
<value>LicenseDetailsTextBox</value>
</data>
<data name="&gt;&gt;LicenseDetailsTextBox.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;LicenseDetailsTextBox.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;LicenseDetailsTextBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="linkLabel1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
@ -229,7 +199,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>1</value>
<value>0</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -265,43 +235,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="licenseDetailsLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="licenseDetailsLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="licenseDetailsLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="licenseDetailsLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 176</value>
</data>
<data name="licenseDetailsLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 15, 3, 0</value>
</data>
<data name="licenseDetailsLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>175, 15</value>
</data>
<data name="licenseDetailsLabel.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="licenseDetailsLabel.Text" xml:space="preserve">
<value>{0} licensed to:</value>
</data>
<data name="&gt;&gt;licenseDetailsLabel.Name" xml:space="preserve">
<value>licenseDetailsLabel</value>
</data>
<data name="&gt;&gt;licenseDetailsLabel.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;licenseDetailsLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;licenseDetailsLabel.ZOrder" xml:space="preserve">
<value>3</value>
<value>1</value>
</data>
<data name="VersionLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -319,7 +253,7 @@
<value>3, 12, 3, 0</value>
</data>
<data name="VersionLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>203, 15</value>
<value>45, 15</value>
</data>
<data name="VersionLabel.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
@ -337,46 +271,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;VersionLabel.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="showAgainCheckBox.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="showAgainCheckBox.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="showAgainCheckBox.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="showAgainCheckBox.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 263</value>
</data>
<data name="showAgainCheckBox.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 12, 3, 3</value>
</data>
<data name="showAgainCheckBox.Size" type="System.Drawing.Size, System.Drawing">
<value>258, 19</value>
</data>
<data name="showAgainCheckBox.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="showAgainCheckBox.Text" xml:space="preserve">
<value>&amp;Show this dialog when opening {0}</value>
</data>
<data name="showAgainCheckBox.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;showAgainCheckBox.Name" xml:space="preserve">
<value>showAgainCheckBox</value>
</data>
<data name="&gt;&gt;showAgainCheckBox.Type" xml:space="preserve">
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;showAgainCheckBox.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;showAgainCheckBox.ZOrder" xml:space="preserve">
<value>5</value>
<value>2</value>
</data>
<data name="pictureBox1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
@ -412,7 +307,7 @@
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pictureBox1.ZOrder" xml:space="preserve">
<value>7</value>
<value>4</value>
</data>
<data name="tableLayoutPanel1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
@ -427,7 +322,7 @@
<value>9</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>420, 323</value>
<value>420, 199</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
@ -445,7 +340,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"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="LicenseDetailsTextBox" Row="5" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="linkLabel1" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="licenseDetailsLabel" Row="4" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="VersionLabel" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="showAgainCheckBox" Row="6" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="OkButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,9,AutoSize,0,Absolute,9" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,9" /&gt;&lt;/TableLayoutSettings&gt;</value>
<value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="linkLabel1" Row="3" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="VersionLabel" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="OkButton" Row="7" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="pictureBox1" Row="0" RowSpan="1" Column="0" ColumnSpan="3" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Absolute,9,AutoSize,0,Absolute,9" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,AutoSize,0,Absolute,9" /&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>
@ -475,6 +370,6 @@
<value>AboutDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, XenCenterMain, Version=7.4.0.2, Culture=neutral, PublicKeyToken=null</value>
<value>XenAdmin.Dialogs.XenDialogBase, XCP-ng Center, Version=99.99.99.9999, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -39,8 +39,8 @@ namespace XenAdmin.Dialogs
public LegalNoticesDialog()
{
InitializeComponent();
//label2.Text = string.Format(Messages.COPYRIGHT, Branding.COMPANY_NAME_LEGAL);
//this.label1.Visible = this.label2.Visible = !XenAdmin.Core.HiddenFeatures.CopyrightHidden;
label1.Text = BrandManager.Copyright;
label2.Text = BrandManager.Trademarks;
}
private void button1_Click(object sender, EventArgs e)

View File

@ -1,56 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Windows.Forms;
using XenAdmin.Controls.CheckableDataGridView;
using XenAdmin.Controls.SummaryPanel;
namespace XenAdmin.Dialogs
{
public interface ILicenseManagerView
{
LicenseManagerController Controller { set; }
void DrawRowsInGrid(List<CheckableDataGridViewRow> itemsToShow);
void DrawSelectedRowsAsChecked(List<CheckableDataGridViewRow> rows);
void DrawSummaryForHighlightedRow(CheckableDataGridViewRow row, SummaryTextComponent component, Action runOnLicenseUrlClick, Action runOnSupportUrlClick);
void DrawHighlightedRow(CheckableDataGridViewRow row);
void DrawRowStatusIcon(int rowIndex, LicenseDataGridViewRow.Status rowStatus);
void DrawAssignButtonAsDisabled(bool isDisabled);
void DrawReleaseButtonAsDisabled(bool isDisabled);
List<CheckableDataGridViewRow> GetCheckedRows { get; }
void ClearAllGridRows();
Control Parent { get; }
void DrawSummaryInformation(string info, bool show);
void SetRowDisabledRowInfo(int rowIndex, string info, bool disabled);
void DrawViewAsReadOnly(bool isReadOnly);
}
}

View File

@ -1,40 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAdmin.Controls.CheckableDataGridView;
using XenAdmin.Dialogs;
namespace XenAdmin.Controls
{
public interface ILicenseCheckableDataGridViewView : ICheckableDataGridViewView
{
void DrawStatusIcon(int rowIndex, LicenseDataGridViewRow.Status status);
}
}

View File

@ -1,114 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using XenAdmin.Dialogs;
namespace XenAdmin.Controls
{
public class LicenseCheckableDataGridView : CheckableDataGridView.CheckableDataGridView, ILicenseCheckableDataGridViewView
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public DataGridViewImageColumn StatusImageColumn { get; set; }
private LicenseCheckableDataGridViewController LicenseController => Controller as LicenseCheckableDataGridViewController;
public LicenseCheckableDataGridView()
{
ColumnHeaderMouseClick += LicenseCheckableDataGridView_ColumnHeaderMouseClick;
}
private void LicenseCheckableDataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (Columns[e.ColumnIndex].SortMode == DataGridViewColumnSortMode.NotSortable)
return;
LicenseController.SortAndRefreshOnColumnClick(e.ColumnIndex);
}
public void SortAndRefresh()
{
LicenseController.SortAndRefresh(LicenseController.SortedColumn);
}
public void SetStatusIcon(int rowIndex, LicenseDataGridViewRow.Status status)
{
LicenseController.SetStatusIcon(rowIndex, status);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawStatusIcon(int rowIndex, LicenseDataGridViewRow.Status status)
{
Program.Invoke(Program.MainWindow, delegate
{
SuspendLayout();
try
{
if (StatusImageColumn == null)
return;
if (rowIndex < 0 || rowIndex >= Rows.Count)
return;
var r = Rows[rowIndex];
if (StatusImageColumn.Index >= r.Cells.Count)
return;
DataGridViewCell cell = new DataGridViewImageCell
{
ValueIsIcon = true,
ValueType = typeof(Bitmap),
Value = new Bitmap(1, 1)
};
if (status == LicenseDataGridViewRow.Status.Warning)
cell.Value = Images.StaticImages._000_Alert2_h32bit_16;
if (status == LicenseDataGridViewRow.Status.Error)
cell.Value = Images.StaticImages._000_error_h32bit_16;
if (status == LicenseDataGridViewRow.Status.Ok)
cell.Value = Images.StaticImages._000_Tick_h32bit_16;
if (status == LicenseDataGridViewRow.Status.Passable)
cell.Value = Images.StaticImages._000_Tick_yellow_h32bit_16;
if (r.Cells[StatusImageColumn.Index] is DataGridViewImageCell)
r.Cells[StatusImageColumn.Index] = cell;
}
finally
{
ResumeLayout();
}
});
}
}
}

View File

@ -1,138 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAdmin.Controls.CheckableDataGridView;
using XenAdmin.Dialogs;
using XenAdmin.Dialogs.LicenseManagerLicenseRowComparers;
namespace XenAdmin.Controls
{
public class LicenseCheckableDataGridViewController : CheckableDataGridViewController
{
private const int DefaultSortIndex = 4;
public LicenseCheckableDataGridViewController()
{
SortedColumn = DefaultSortIndex;
}
public LicenseCheckableDataGridViewController(ILicenseCheckableDataGridViewView view) : base(view)
{
}
private ILicenseCheckableDataGridViewView LicenseView
{
get { return View as ILicenseCheckableDataGridViewView; }
}
public void SetStatusIcon(int rowIndex, LicenseDataGridViewRow.Status status)
{
LicenseView.DrawStatusIcon(rowIndex, status);
}
/// <summary>
/// Sorts and refreshes without cycling the sort mode
/// </summary>
public void SortAndRefresh(int columnIndex)
{
SortAndRefresh(columnIndex, false);
}
/// <summary>
/// Sorts and refreshes after cycling the sort mode
/// </summary>
public void SortAndRefreshOnColumnClick(int columnIndex)
{
SortAndRefresh(columnIndex, true);
}
/// <summary>
/// General method for sort and refresh
/// </summary>
/// <param name="columnIndex"></param>
/// <param name="cycleSortOrder">If true then the sort order will be cycled to the next mdoe before sorting</param>
private void SortAndRefresh(int columnIndex, bool cycleSortOrder)
{
IComparer<CheckableDataGridViewRow> comparer = ComparerForColumn(columnIndex);
if (cycleSortOrder)
SetNextSortDirection(columnIndex);
if (CurrentSortDirection == SortDirection.None)
comparer = ComparerForColumn(DefaultSortIndex);
if (comparer == null || columnIndex < 0)
return;
Program.AssertOnEventThread();
View.SuspendDrawing();
try
{
View.DrawAllRowsAsClearedMW();
storedRows.Sort(comparer);
if(CurrentSortDirection == SortDirection.Descending)
storedRows.Reverse();
foreach (CheckableDataGridViewRow row in storedRows)
{
View.DrawRowMW(row);
LicenseDataGridViewRow lRow = row as LicenseDataGridViewRow;
if (lRow == null)
continue;
LicenseView.DrawStatusIcon(row.Index, lRow.RowStatus);
if (row.Highlighted)
View.DrawRowAsHighlightedMW(true, row.Index);
}
}
finally
{
View.ResumeDrawing();
}
}
private IComparer<CheckableDataGridViewRow> ComparerForColumn(int index)
{
switch (index)
{
case 1:
return new NameColumnComparer();
case 2:
return new ProductColumnComparer();
case 4:
return new ExpiryComparer();
default:
return null;
}
}
}
}

View File

@ -1,496 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Drawing;
using System.Linq;
using XenAdmin.Controls.CheckableDataGridView;
using XenAdmin.Core;
using XenAPI;
namespace XenAdmin.Dialogs
{
public class LicenseDataGridViewRow : CheckableDataGridViewRow
{
public enum Status
{
Error,
Warning,
Ok,
Updating,
// CP-43000: to be used for post Nile hosts using trial edition
Passable
}
private readonly ILicenseStatus licenseStatus;
public LicenseDataGridViewRow(IXenObject xenObject = null)
: this(xenObject, new LicenseStatus(xenObject))
{
}
public LicenseDataGridViewRow(IXenObject xenObject, ILicenseStatus status)
: base(xenObject)
{
licenseStatus = status;
licenseStatus.ItemUpdated += licenseStatus_ItemUpdated;
}
public override void BeginCellUpdate()
{
licenseStatus.BeginUpdate();
}
private void licenseStatus_ItemUpdated()
{
Program.Invoke(DataGridView?.Parent, TriggerCellTextUpdatedEvent);
}
public override Queue<object> CellText
{
get
{
bool connectionUp = XenObject != null && XenObject.Connection.IsConnected;
if(!connectionUp)
Disabled = true;
Queue<object> cellDetails = new Queue<object>();
cellDetails.Enqueue(XenObject?.Name());
cellDetails.Enqueue(LicenseName);
cellDetails.Enqueue(new Bitmap(1,1));
cellDetails.Enqueue(OverallStatus);
return cellDetails;
}
}
public bool IsUsingLicenseServer
{
get { return !String.IsNullOrEmpty(LicenseServer); }
}
private Host XenObjectHost
{
get
{
var host = XenObject as Host;
if (host != null)
return host;
var pool = XenObject as Pool;
if (pool != null)
return pool.Connection.Resolve(pool.master);
return null;
}
}
public override bool CellDataLoaded
{
get
{
return licenseStatus.Updated;
}
}
public virtual string LicenseName
{
get
{
if (XenObject == null || XenObject.Connection == null || !XenObject.Connection.IsConnected)
return Messages.UNKNOWN;
// for a pool, get the lowest license
Pool pool = Helpers.GetPool(XenObject.Connection);
if (pool != null)
return Helpers.GetFriendlyLicenseName(pool);
if (XenObjectHost != null)
return Helpers.GetFriendlyLicenseName(XenObjectHost);
return Messages.UNKNOWN;
}
}
public override bool LicenseWarningRequired => ShouldShowLicenseWarningText(out _, out _);
public override string LicenseWarningText
{
get
{
var _ = ShouldShowLicenseWarningText(out var text, out var _);
return text;
}
}
public override bool SupportWarningRequired => ShouldShowSupportWarningText(out _, out _);
public override string SupportWarningText
{
get
{
var _ = ShouldShowSupportWarningText(out var text, out var _);
return text;
}
}
private bool ShouldShowSupportWarningText(out string text, out Status status)
{
text = null;
status = Status.Ok;
if (XenObjectHost == null || XenObjectHost.IsInPreviewRelease() || !Helpers.NileOrGreater(XenObjectHost))
{
return false;
}
if (XenObjectHost.CssLicenseHasExpired())
{
status = Status.Error;
text = $"{Messages.LICENSE_MANAGER_EXPIRED_CSS_LONG}{Environment.NewLine}{Messages.EXPIRED_CSS_UPSELLING_MESSAGE_POOL}";
}
else
{
status = Status.Ok;
text = Messages.LICENSE_MANAGER_ACTIVE_CSS_LONG;
}
return true;
}
private bool ShouldShowLicenseWarningText(out string text, out Status status)
{
text = null;
status = Status.Ok;
if (XenObjectHost == null)
{
return false;
}
switch (CurrentLicenseState)
{
case Dialogs.LicenseStatus.HostState.Free:
{
var pool = Helpers.GetPool(XenObjectHost.Connection);
text = Dialogs.LicenseStatus.PoolIsMixedFreeAndExpiring(pool) ? Messages.POOL_IS_PARTIALLY_LICENSED : licenseStatus.LicenseEntitlements;
status = Helpers.CloudOrGreater(XenObjectHost) ? Status.Passable :Status.Error;
}
break;
case Dialogs.LicenseStatus.HostState.PartiallyLicensed:
text = Messages.POOL_IS_PARTIALLY_LICENSED;
status = Status.Warning;
break;
case Dialogs.LicenseStatus.HostState.Licensed:
{
var pool = Helpers.GetPool(XenObjectHost.Connection);
if (Dialogs.LicenseStatus.PoolHasMixedLicenses(pool))
{
text = Messages.POOL_HAS_MIXED_LICENSES;
}
else if (Dialogs.LicenseStatus.PoolIsPartiallyLicensed(pool))
{
text = Messages.POOL_IS_PARTIALLY_LICENSED;
}
else
{
text = licenseStatus.LicenseEntitlements;
}
status = Status.Ok;
}
break;
case Dialogs.LicenseStatus.HostState.Unavailable:
text = Messages.LICENSE_EXPIRED_NO_LICENSES_AVAILABLE;
status = Status.Error;
break;
case Dialogs.LicenseStatus.HostState.Expired:
text = Messages.LICENSE_YOUR_LICENCE_HAS_EXPIRED;
status = Status.Error;
break;
case Dialogs.LicenseStatus.HostState.RegularGrace:
case Dialogs.LicenseStatus.HostState.UpgradeGrace:
case Dialogs.LicenseStatus.HostState.ExpiresSoon:
text = string.Format(Messages.LICENSE_YOUR_LICENCE_EXPIRES_IN, licenseStatus.LicenseExpiresIn.FuzzyTime());
status = Status.Warning;
break;
case Dialogs.LicenseStatus.HostState.Unknown:
default:
status = licenseStatus.Updated ? Status.Warning : Status.Updating;
text = Messages.UNKNOWN;
return !licenseStatus.Updated;
}
return true;
}
public bool LicenseHelperUrlRequired => ShouldShowLicenseWarningText(out _, out var status) &&
(status == Status.Error || status == Status.Warning || status == Status.Passable);
public bool SupportHelperUrlRequired => ShouldShowSupportWarningText(out _, out var status) &&
(status == Status.Error || status == Status.Warning) &&
!LicenseHelperUrlRequired;
public Status RowStatus
{
get
{
ShouldShowLicenseWarningText(out _, out var licenseWarningStatus);
ShouldShowSupportWarningText(out _, out var supportWarningStatus);
if (!XenObjectHost.IsInPreviewRelease() &&
(licenseWarningStatus != supportWarningStatus || licenseWarningStatus == Status.Passable && supportWarningStatus == Status.Error)
)
{
// will show a warning icon
return Status.Warning;
}
if (licenseWarningStatus != Status.Ok)
{
return licenseWarningStatus;
}
if (supportWarningStatus != Status.Ok)
{
return supportWarningStatus;
}
return Status.Ok;
}
}
public Status RowLicenseStatus
{
get
{
var _ = ShouldShowLicenseWarningText(out var _, out var status);
return status;
}
}
public Status RowSupportStatus
{
get
{
var _ = ShouldShowSupportWarningText(out var _, out var status);
return status;
}
}
public string LicenseServer
{
get
{
if (licenseStatus.LicenseEdition != Host.Edition.Free)
{
string address = LicenseServerAddress;
string port = LicenseServerPort;
if(!String.IsNullOrEmpty(port))
{
return String.Format(Messages.LICENSE_SERVER_PORT_FORMAT, address, port);
}
return address;
}
return string.Empty;
}
}
public string LicenseServerAddress
{
get { return LicenseServerDetailKeyedOn("address"); }
}
public string LicenseServerPort
{
get { return LicenseServerDetailKeyedOn("port"); }
}
private string LicenseServerDetailKeyedOn(string key)
{
if (licenseStatus.LicenseEdition != Host.Edition.Free)
{
if (XenObjectHost.license_server.ContainsKey(key) && !string.IsNullOrEmpty(XenObjectHost.license_server[key]))
{
return XenObjectHost.license_server[key];
}
}
return string.Empty;
}
public bool CanUseLicenseServer
{
get { return !string.IsNullOrEmpty(XenObjectHost.edition); }
}
public bool HasLicenseServer
{
get { return !String.IsNullOrEmpty(LicenseServer); }
}
public virtual string LicenseProductVersion
{
get
{
if (XenObject != null && !XenObject.Connection.IsConnected)
return String.Empty;
return XenObjectHost.ProductVersionTextShort();
}
}
public DateTime? LicenseExpires
{
get { return licenseStatus.ExpiryDate; }
}
public TimeSpan LicenseExpiresIn
{
get { return licenseStatus.LicenseExpiresIn; }
}
public int NumberOfSockets
{
get
{
var h = XenObject as Host;
if (h != null)
return h.CpuSockets();
var p = XenObject as Pool;
if (p != null)
return p.CpuSockets();
return 0;
}
}
public LicenseStatus.HostState CurrentLicenseState
{
get
{
if (XenObject != null && !XenObject.Connection.IsConnected)
return Dialogs.LicenseStatus.HostState.Unknown;
return licenseStatus.CurrentState;
}
}
public Host.Edition LicenseEdition
{
get { return licenseStatus.LicenseEdition; }
}
private string OverallStatus
{
get
{
var statuses = new[]
{
LicenseStatus,
SupportStatus
};
return string.Join("; ", statuses.Where((s) => !string.IsNullOrEmpty(s)));
}
}
private string LicenseStatus
{
get
{
switch (CurrentLicenseState)
{
case Dialogs.LicenseStatus.HostState.PartiallyLicensed:
return Messages.PARTIALLY_LICENSED;
case Dialogs.LicenseStatus.HostState.Unavailable:
case Dialogs.LicenseStatus.HostState.Expired:
return Messages.LICENSE_UNLICENSED;
case Dialogs.LicenseStatus.HostState.Free:
return XenObjectHost.IsInPreviewRelease() ? Messages.LICENSE_TRIAL : Messages.LICENSE_UNLICENSED;
case Dialogs.LicenseStatus.HostState.Licensed:
return Messages.LICENSE_LICENSED;
case Dialogs.LicenseStatus.HostState.RegularGrace:
case Dialogs.LicenseStatus.HostState.UpgradeGrace:
case Dialogs.LicenseStatus.HostState.ExpiresSoon:
return licenseStatus.LicenseExpiresIn.FuzzyTime();
case Dialogs.LicenseStatus.HostState.Unknown:
if(!licenseStatus.Updated)
return Messages.LICENSE_UPDATING;
return Messages.UNKNOWN;
default:
return Messages.UNKNOWN;
}
}
}
private string SupportStatus
{
get
{
if (!ShouldShowSupportWarningText(out _, out var supportWarningStatus))
{
return null;
}
return supportWarningStatus == Status.Ok ? Messages.LICENSE_MANAGER_ACTIVE_CSS : Messages.LICENSE_MANAGER_EXPIRED_CSS;
}
}
public List<Host> RepresentedHosts
{
get
{
List<Host> hosts = new List<Host>();
if (XenObject is Pool)
hosts.AddRange(XenObject.Connection.Cache.Hosts);
if (XenObject is Host)
hosts.Add(XenObject as Host);
return hosts;
}
}
private bool disposed;
protected override void Dispose(bool disposing)
{
if(!disposed)
{
if(disposing)
{
if(licenseStatus != null)
licenseStatus.Dispose();
}
disposed = true;
}
base.Dispose(disposing);
}
}
}

View File

@ -1,178 +0,0 @@
namespace XenAdmin.Dialogs
{
partial class LicenseManager
{
/// <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))
{
checkableDataGridView.SelectionChanged -= checkableDataGridView_SelectionChanged;
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(LicenseManager));
this.checkableDataGridView = new XenAdmin.Controls.LicenseCheckableDataGridView();
this.checkBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.poolColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.productVersionColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.statusImageColumn = new System.Windows.Forms.DataGridViewImageColumn();
this.statusColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.downloadLicenseServerLink = new System.Windows.Forms.LinkLabel();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.assignLicenceButton = new System.Windows.Forms.Button();
this.releaseLicenseButton = new System.Windows.Forms.Button();
this.summaryPanel = new XenAdmin.Controls.SummaryPanel.SummaryPanel();
this.cancelButton = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.checkableDataGridView)).BeginInit();
this.tableLayoutPanel1.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
this.SuspendLayout();
//
// checkableDataGridView
//
this.checkableDataGridView.BackgroundColor = System.Drawing.SystemColors.Window;
this.checkableDataGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.checkableDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.checkableDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.checkBoxColumn,
this.poolColumn,
this.productVersionColumn,
this.statusImageColumn,
this.statusColumn});
resources.ApplyResources(this.checkableDataGridView, "checkableDataGridView");
this.checkableDataGridView.Name = "checkableDataGridView";
//
// checkBoxColumn
//
this.checkBoxColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
resources.ApplyResources(this.checkBoxColumn, "checkBoxColumn");
this.checkBoxColumn.Name = "checkBoxColumn";
//
// poolColumn
//
resources.ApplyResources(this.poolColumn, "poolColumn");
this.poolColumn.Name = "poolColumn";
this.poolColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Programmatic;
//
// productVersionColumn
//
resources.ApplyResources(this.productVersionColumn, "productVersionColumn");
this.productVersionColumn.Name = "productVersionColumn";
this.productVersionColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Programmatic;
//
// statusImageColumn
//
this.statusImageColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
resources.ApplyResources(this.statusImageColumn, "statusImageColumn");
this.statusImageColumn.Name = "statusImageColumn";
//
// statusColumn
//
this.statusColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells;
resources.ApplyResources(this.statusColumn, "statusColumn");
this.statusColumn.Name = "statusColumn";
this.statusColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.statusColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Programmatic;
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.downloadLicenseServerLink, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.checkableDataGridView, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.summaryPanel, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.cancelButton, 1, 2);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// downloadLicenseServerLink
//
resources.ApplyResources(this.downloadLicenseServerLink, "downloadLicenseServerLink");
this.downloadLicenseServerLink.Name = "downloadLicenseServerLink";
this.downloadLicenseServerLink.TabStop = true;
//
// tableLayoutPanel2
//
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.Controls.Add(this.assignLicenceButton, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.releaseLicenseButton, 1, 0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// assignLicenceButton
//
resources.ApplyResources(this.assignLicenceButton, "assignLicenceButton");
this.assignLicenceButton.Name = "assignLicenceButton";
this.assignLicenceButton.UseVisualStyleBackColor = true;
//
// releaseLicenseButton
//
resources.ApplyResources(this.releaseLicenseButton, "releaseLicenseButton");
this.releaseLicenseButton.Name = "releaseLicenseButton";
this.releaseLicenseButton.UseVisualStyleBackColor = true;
//
// summaryPanel
//
this.summaryPanel.BackColor = System.Drawing.SystemColors.Window;
this.summaryPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
resources.ApplyResources(this.summaryPanel, "summaryPanel");
this.summaryPanel.Name = "summaryPanel";
//
// cancelButton
//
resources.ApplyResources(this.cancelButton, "cancelButton");
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.cancelButton.Name = "cancelButton";
this.cancelButton.UseVisualStyleBackColor = true;
//
// LicenseManager
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.CancelButton = this.cancelButton;
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "LicenseManager";
((System.ComponentModel.ISupportInitialize)(this.checkableDataGridView)).EndInit();
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
this.tableLayoutPanel2.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private XenAdmin.Controls.LicenseCheckableDataGridView checkableDataGridView;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.Button assignLicenceButton;
private System.Windows.Forms.Button releaseLicenseButton;
private XenAdmin.Controls.SummaryPanel.SummaryPanel summaryPanel;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.LinkLabel downloadLicenseServerLink;
private System.Windows.Forms.DataGridViewCheckBoxColumn checkBoxColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn poolColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn productVersionColumn;
private System.Windows.Forms.DataGridViewImageColumn statusImageColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn statusColumn;
}
}

View File

@ -1,286 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Windows.Forms;
using XenAdmin.Controls;
using XenAdmin.Controls.CheckableDataGridView;
using XenAdmin.Controls.SummaryPanel;
using XenAdmin.Core;
using XenAPI;
namespace XenAdmin.Dialogs
{
public partial class LicenseManager : XenDialogBase, ILicenseManagerView
{
public LicenseManager(LicenseManagerController lmcontroller)
{
InitializeComponent();
checkableDataGridView.StatusImageColumn = statusImageColumn;
SetupControllers(lmcontroller);
}
private void SetupControllers(LicenseManagerController lmcontroller)
{
checkableDataGridView.Controller = new LicenseCheckableDataGridViewController(checkableDataGridView);
summaryPanel.Controller = new SummaryPanelController(summaryPanel);
checkableDataGridView.LoadView();
Controller = lmcontroller;
Controller.View = this;
downloadLicenseServerLink.Visible = checkBoxColumn.Visible = !Controller.ReadOnlyView;
}
private void LoadView(List<IXenObject> itemsToShow, List<IXenObject> selectedItems)
{
//Grid
checkableDataGridView.SelectionChanged += checkableDataGridView_SelectionChanged;
checkableDataGridView.RowUpdated += checkableDataGridView_RowUpdated;
checkableDataGridView.RowChecked += checkableDataGridView_RowChecked;
//Buttons
cancelButton.Click += closeButton_Click;
releaseLicenseButton.Click += releaseLicenseButton_Click;
assignLicenceButton.Click += assignLicenceButton_Click;
downloadLicenseServerLink.LinkClicked += downloadLicenseServerLink_LinkClicked;
//Controllers
Controller.PopulateGrid(itemsToShow, selectedItems);
}
void checkableDataGridView_RowChecked(object sender, CheckableDataGridView.CheckableDataGridViewRowEventArgs e)
{
Controller.UpdateButtonEnablement();
}
private void assignLicenceButton_Click(object sender, EventArgs e)
{
Controller.AssignLicense(checkableDataGridView.CheckedRows);
}
private void downloadLicenseServerLink_LinkClicked(object sender, EventArgs e)
{
Controller.DownloadLicenseManager();
}
private void releaseLicenseButton_Click(object sender, EventArgs e)
{
Controller.ReleaseLicenses(checkableDataGridView.CheckedRows);
}
private void checkableDataGridView_RowUpdated(object sender, CheckableDataGridView.CheckableDataGridViewRowEventArgs e)
{
LicenseCheckableDataGridView senderGrid = sender as LicenseCheckableDataGridView;
if (senderGrid == null || e.RowIndex >= senderGrid.Rows.Count || e.RowIndex < 0)
return;
LicenseDataGridViewRow lRow = senderGrid.Rows[e.RowIndex] as LicenseDataGridViewRow;
if (lRow == null)
return;
Controller.SetStatusIcon(e.RowIndex, lRow.RowStatus);
if (!e.RefreshGrid && senderGrid.SelectedRows.Count > 0 && senderGrid.SelectedRows[0].Index == e.RowIndex)
{
Controller.SummariseSelectedRow(checkableDataGridView.GetCheckableRow(e.RowIndex));
}
if (e.RefreshGrid)
senderGrid.SortAndRefresh();
}
private void checkableDataGridView_SelectionChanged(object sender, EventArgs e)
{
CheckableDataGridView senderGrid = sender as CheckableDataGridView;
if(senderGrid == null || senderGrid.SelectedRows.Count<1)
return;
Controller.SummariseSelectedRow(checkableDataGridView.GetCheckableRow(senderGrid.SelectedRows[0].Index));
}
private void closeButton_Click(object sender, EventArgs e)
{
Close();
}
public DialogResult ShowDialog(IWin32Window parent, List<IXenObject> itemsToShow, List<IXenObject> selectedItems)
{
LoadView(itemsToShow, selectedItems);
return ShowDialog(parent);
}
public void RefreshView(List<IXenObject> itemsToShow, List<IXenObject> selectedItems)
{
Controller.Repopulate(itemsToShow, selectedItems);
}
#region ILicenseManagerView Members
[EditorBrowsable(EditorBrowsableState.Never)]
public LicenseManagerController Controller { set; private get; }
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawRowStatusIcon(int rowIndex, LicenseDataGridViewRow.Status rowStatus)
{
checkableDataGridView.SetStatusIcon(rowIndex, rowStatus);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public List<CheckableDataGridViewRow> GetCheckedRows
{
get { return checkableDataGridView.CheckedRows; }
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawRowsInGrid(List<CheckableDataGridViewRow> itemsToShow)
{
checkableDataGridView.AddRows(itemsToShow);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawSelectedRowsAsChecked(List<CheckableDataGridViewRow> rows)
{
checkableDataGridView.CheckRows(rows);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawSummaryForHighlightedRow(CheckableDataGridViewRow row, SummaryTextComponent summaryComponent, Action runOnLicenseUrlClick, Action runOnSupportUrlClick)
{
Program.Invoke(this, delegate
{
LicenseDataGridViewRow lRow = row as LicenseDataGridViewRow;
if(lRow == null || lRow.XenObject == null)
return;
summaryPanel.Title = lRow.XenObject.Name();
summaryPanel.LicenseHelperUrlText = Messages.LICENSE_MANAGER_BUY_LICENSE_LINK_TEXT;
summaryPanel.SupportHelperUrlText = Messages.LICENSE_MANAGER_PURCHASE_SUPPORT_LINK_TEXT;
summaryPanel.LicenseHelperUrlVisible = lRow.LicenseHelperUrlRequired && !Controller.ReadOnlyView;
summaryPanel.SupportHelperUrlVisible = lRow.SupportHelperUrlRequired &&
!Controller.ReadOnlyView;
summaryPanel.LicenseWarningVisible = lRow.LicenseWarningRequired;
summaryPanel.SupportWarningVisible = lRow.SupportWarningRequired;
summaryPanel.LicenseWarningText = lRow.LicenseWarningText;
summaryPanel.SupportWarningText = lRow.SupportWarningText;
summaryPanel.SummaryText = summaryComponent;
switch (lRow.RowLicenseStatus)
{
case LicenseDataGridViewRow.Status.Warning:
summaryPanel.LicenseWarningIcon = Images.StaticImages._000_Alert2_h32bit_16;
break;
case LicenseDataGridViewRow.Status.Error:
summaryPanel.LicenseWarningIcon = Images.StaticImages._000_error_h32bit_16;
break;
case LicenseDataGridViewRow.Status.Passable:
summaryPanel.LicenseWarningIcon =
Images.StaticImages._000_Tick_yellow_h32bit_16;
break;
default:
summaryPanel.LicenseWarningIcon = Images.StaticImages._000_Tick_h32bit_16;
break;
}
switch (lRow.RowSupportStatus)
{
case LicenseDataGridViewRow.Status.Ok:
summaryPanel.SupportWarningIcon = Images.StaticImages._000_Tick_h32bit_16;
break;
case LicenseDataGridViewRow.Status.Error:
summaryPanel.SupportWarningIcon = Images.StaticImages._000_error_h32bit_16;
break;
default:
summaryPanel.SupportWarningIcon = Images.StaticImages._000_Tick_h32bit_16;
break;
}
summaryPanel.InformationVisible = false;
summaryPanel.RunOnLicenseUrlClick = runOnLicenseUrlClick;
summaryPanel.RunOnSupportUrlClick = runOnSupportUrlClick;
});
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawHighlightedRow(CheckableDataGridViewRow row)
{
checkableDataGridView.HighlightRow(row);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawAssignButtonAsDisabled(bool isDisabled)
{
assignLicenceButton.Enabled = !isDisabled;
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawReleaseButtonAsDisabled(bool isDisabled)
{
releaseLicenseButton.Enabled = !isDisabled;
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void ClearAllGridRows()
{
checkableDataGridView.ClearAllGridRows();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawSummaryInformation(string info, bool show)
{
Program.Invoke(Program.MainWindow, delegate
{
summaryPanel.InformationText = info;
summaryPanel.InformationVisible = show;
});
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void SetRowDisabledRowInfo(int rowIndex, string info, bool disabled)
{
checkableDataGridView.SetRowInformation(rowIndex, info, disabled);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public void DrawViewAsReadOnly(bool isReadOnly)
{
if (isReadOnly)
{
assignLicenceButton.Hide();
releaseLicenseButton.Hide();
}
else
{
assignLicenceButton.Show();
releaseLicenseButton.Show();
}
}
#endregion
}
}

View File

@ -1,588 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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>
<metadata name="checkBoxColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="poolColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="productVersionColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="statusImageColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="statusColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="checkableDataGridView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="checkableDataGridView.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="checkableDataGridView.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="checkableDataGridView.Size" type="System.Drawing.Size, System.Drawing">
<value>670, 352</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="checkableDataGridView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Name" xml:space="preserve">
<value>checkableDataGridView</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Type" xml:space="preserve">
<value>XenAdmin.Controls.LicenseCheckableDataGridView, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;checkableDataGridView.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="checkBoxColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="checkBoxColumn.HeaderText" xml:space="preserve">
<value/>
</data>
<data name="checkBoxColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="checkBoxColumn.Width" type="System.Int32, mscorlib">
<value>24</value>
</data>
<metadata name="poolColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="poolColumn.HeaderText" xml:space="preserve">
<value>プール/ホスト</value>
</data>
<data name="poolColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="poolColumn.Width" type="System.Int32, mscorlib">
<value>250</value>
</data>
<metadata name="productVersionColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="productVersionColumn.HeaderText" xml:space="preserve">
<value>ライセンス</value>
</data>
<data name="productVersionColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="productVersionColumn.Width" type="System.Int32, mscorlib">
<value>250</value>
</data>
<metadata name="statusImageColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="statusImageColumn.HeaderText" xml:space="preserve">
<value/>
</data>
<data name="statusImageColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="statusImageColumn.Width" type="System.Int32, mscorlib">
<value>24</value>
</data>
<metadata name="statusColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="statusColumn.HeaderText" xml:space="preserve">
<value>状態</value>
</data>
<data name="statusColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Name" xml:space="preserve">
<value>downloadLicenseServerLink</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel2.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="assignLicenceButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="releaseLicenseButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0" />&lt;Rows Styles="AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="&gt;&gt;summaryPanel.Name" xml:space="preserve">
<value>summaryPanel</value>
</data>
<data name="&gt;&gt;summaryPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.SummaryPanel.SummaryPanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;summaryPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;summaryPanel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>4</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>12, 12</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>916, 426</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="downloadLicenseServerLink" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="checkableDataGridView" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="summaryPanel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="cancelButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,73.85621,Percent,26.14379" />&lt;Rows Styles="Percent,100,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="downloadLicenseServerLink.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="downloadLicenseServerLink.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="downloadLicenseServerLink.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="downloadLicenseServerLink.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="downloadLicenseServerLink.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 400</value>
</data>
<data name="downloadLicenseServerLink.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="downloadLicenseServerLink.Size" type="System.Drawing.Size, System.Drawing">
<value>286, 15</value>
</data>
<data name="downloadLicenseServerLink.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="downloadLicenseServerLink.Text" xml:space="preserve">
<value>{0} ライセンス サーバーの仮想アプライアンスのダウンロード</value>
</data>
<data name="downloadLicenseServerLink.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Name" xml:space="preserve">
<value>downloadLicenseServerLink</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;assignLicenceButton.Name" xml:space="preserve">
<value>assignLicenceButton</value>
</data>
<data name="&gt;&gt;assignLicenceButton.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;assignLicenceButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;assignLicenceButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.Name" xml:space="preserve">
<value>releaseLicenseButton</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.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;releaseLicenseButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 361</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>670, 31</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel2.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="assignLicenceButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="releaseLicenseButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0" />&lt;Rows Styles="AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="assignLicenceButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="assignLicenceButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="assignLicenceButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="assignLicenceButton.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 25</value>
</data>
<data name="assignLicenceButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="assignLicenceButton.Text" xml:space="preserve">
<value>ライセンスの割り当て(&amp;A)...</value>
</data>
<data name="&gt;&gt;assignLicenceButton.Name" xml:space="preserve">
<value>assignLicenceButton</value>
</data>
<data name="&gt;&gt;assignLicenceButton.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;assignLicenceButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;assignLicenceButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="releaseLicenseButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="releaseLicenseButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="releaseLicenseButton.Location" type="System.Drawing.Point, System.Drawing">
<value>177, 3</value>
</data>
<data name="releaseLicenseButton.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 25</value>
</data>
<data name="releaseLicenseButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="releaseLicenseButton.Text" xml:space="preserve">
<value>ライセンスの割り当て解除(&amp;R)</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.Name" xml:space="preserve">
<value>releaseLicenseButton</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.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;releaseLicenseButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="summaryPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="summaryPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="summaryPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>679, 3</value>
</data>
<data name="summaryPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>234, 352</value>
</data>
<data name="summaryPanel.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;summaryPanel.Name" xml:space="preserve">
<value>summaryPanel</value>
</data>
<data name="&gt;&gt;summaryPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.SummaryPanel.SummaryPanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;summaryPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;summaryPanel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="cancelButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>822, 398</value>
</data>
<data name="cancelButton.Size" type="System.Drawing.Size, System.Drawing">
<value>91, 25</value>
</data>
<data name="cancelButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="cancelButton.Text" xml:space="preserve">
<value>閉じる(&amp;C)</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>4</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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>940, 450</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>12, 12, 12, 12</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>ライセンス マネージャ</value>
</data>
<data name="&gt;&gt;checkBoxColumn.Name" xml:space="preserve">
<value>checkBoxColumn</value>
</data>
<data name="&gt;&gt;checkBoxColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;poolColumn.Name" xml:space="preserve">
<value>poolColumn</value>
</data>
<data name="&gt;&gt;poolColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;productVersionColumn.Name" xml:space="preserve">
<value>productVersionColumn</value>
</data>
<data name="&gt;&gt;productVersionColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;statusImageColumn.Name" xml:space="preserve">
<value>statusImageColumn</value>
</data>
<data name="&gt;&gt;statusImageColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewImageColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;statusColumn.Name" xml:space="preserve">
<value>statusColumn</value>
</data>
<data name="&gt;&gt;statusColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>LicenseManager</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

@ -1,498 +0,0 @@
<?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>
<metadata name="checkBoxColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="checkBoxColumn.HeaderText" xml:space="preserve">
<value />
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="checkBoxColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="checkBoxColumn.Width" type="System.Int32, mscorlib">
<value>24</value>
</data>
<metadata name="poolColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="poolColumn.HeaderText" xml:space="preserve">
<value>Pool/Host</value>
</data>
<data name="poolColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<metadata name="productVersionColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="productVersionColumn.HeaderText" xml:space="preserve">
<value>License</value>
</data>
<data name="productVersionColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<metadata name="statusImageColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="statusImageColumn.HeaderText" xml:space="preserve">
<value />
</data>
<data name="statusImageColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="statusImageColumn.Width" type="System.Int32, mscorlib">
<value>24</value>
</data>
<metadata name="statusColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="statusColumn.HeaderText" xml:space="preserve">
<value>Status</value>
</data>
<data name="statusColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="statusColumn.Width" type="System.Int32, mscorlib">
<value>64</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="checkableDataGridView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="checkableDataGridView.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="checkableDataGridView.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="checkableDataGridView.Size" type="System.Drawing.Size, System.Drawing">
<value>631, 444</value>
</data>
<data name="checkableDataGridView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Name" xml:space="preserve">
<value>checkableDataGridView</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Type" xml:space="preserve">
<value>XenAdmin.Controls.LicenseCheckableDataGridView, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;checkableDataGridView.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="downloadLicenseServerLink.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="downloadLicenseServerLink.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="downloadLicenseServerLink.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="downloadLicenseServerLink.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="downloadLicenseServerLink.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 489</value>
</data>
<data name="downloadLicenseServerLink.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="downloadLicenseServerLink.Size" type="System.Drawing.Size, System.Drawing">
<value>284, 15</value>
</data>
<data name="downloadLicenseServerLink.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="downloadLicenseServerLink.Text" xml:space="preserve">
<value>Learn how to install and configure the License Server</value>
</data>
<data name="downloadLicenseServerLink.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Name" xml:space="preserve">
<value>downloadLicenseServerLink</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="assignLicenceButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="assignLicenceButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="assignLicenceButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="assignLicenceButton.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<data name="assignLicenceButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="assignLicenceButton.Text" xml:space="preserve">
<value>&amp;Assign License...</value>
</data>
<data name="&gt;&gt;assignLicenceButton.Name" xml:space="preserve">
<value>assignLicenceButton</value>
</data>
<data name="&gt;&gt;assignLicenceButton.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;assignLicenceButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;assignLicenceButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="releaseLicenseButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="releaseLicenseButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="releaseLicenseButton.Location" type="System.Drawing.Point, System.Drawing">
<value>159, 3</value>
</data>
<data name="releaseLicenseButton.Size" type="System.Drawing.Size, System.Drawing">
<value>150, 25</value>
</data>
<data name="releaseLicenseButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="releaseLicenseButton.Text" xml:space="preserve">
<value>&amp;Release License</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.Name" xml:space="preserve">
<value>releaseLicenseButton</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.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;releaseLicenseButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 450</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>637, 31</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</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="assignLicenceButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="releaseLicenseButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="summaryPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="summaryPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="summaryPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>640, 3</value>
</data>
<data name="summaryPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>267, 444</value>
</data>
<data name="summaryPanel.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;summaryPanel.Name" xml:space="preserve">
<value>summaryPanel</value>
</data>
<data name="&gt;&gt;summaryPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.SummaryPanel.SummaryPanel, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;summaryPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;summaryPanel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="cancelButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>832, 484</value>
</data>
<data name="cancelButton.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 25</value>
</data>
<data name="cancelButton.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="cancelButton.Text" xml:space="preserve">
<value>&amp;Close</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>4</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>12, 12</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>910, 512</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>$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="downloadLicenseServerLink" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="checkableDataGridView" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="summaryPanel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="cancelButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,70,Percent,30" /&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=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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>934, 536</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>12, 12, 12, 12</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>License Manager</value>
</data>
<data name="&gt;&gt;checkBoxColumn.Name" xml:space="preserve">
<value>checkBoxColumn</value>
</data>
<data name="&gt;&gt;checkBoxColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;poolColumn.Name" xml:space="preserve">
<value>poolColumn</value>
</data>
<data name="&gt;&gt;poolColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;productVersionColumn.Name" xml:space="preserve">
<value>productVersionColumn</value>
</data>
<data name="&gt;&gt;productVersionColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;statusImageColumn.Name" xml:space="preserve">
<value>statusImageColumn</value>
</data>
<data name="&gt;&gt;statusImageColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewImageColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;statusColumn.Name" xml:space="preserve">
<value>statusColumn</value>
</data>
<data name="&gt;&gt;statusColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>LicenseManager</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.XenDialogBase, [XenCenter_No_Space], Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,588 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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>
<metadata name="checkBoxColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="poolColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="productVersionColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="statusImageColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="statusColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="checkableDataGridView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="checkableDataGridView.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="checkableDataGridView.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="checkableDataGridView.Size" type="System.Drawing.Size, System.Drawing">
<value>670, 424</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="checkableDataGridView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Name" xml:space="preserve">
<value>checkableDataGridView</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Type" xml:space="preserve">
<value>XenAdmin.Controls.LicenseCheckableDataGridView, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;checkableDataGridView.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;checkableDataGridView.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<metadata name="checkBoxColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="checkBoxColumn.HeaderText" xml:space="preserve">
<value/>
</data>
<data name="checkBoxColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="checkBoxColumn.Width" type="System.Int32, mscorlib">
<value>24</value>
</data>
<metadata name="poolColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="poolColumn.HeaderText" xml:space="preserve">
<value>池/主机</value>
</data>
<data name="poolColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="poolColumn.Width" type="System.Int32, mscorlib">
<value>250</value>
</data>
<metadata name="productVersionColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="productVersionColumn.HeaderText" xml:space="preserve">
<value>许可证</value>
</data>
<data name="productVersionColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="productVersionColumn.Width" type="System.Int32, mscorlib">
<value>250</value>
</data>
<metadata name="statusImageColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="statusImageColumn.HeaderText" xml:space="preserve">
<value/>
</data>
<data name="statusImageColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>24</value>
</data>
<data name="statusImageColumn.Width" type="System.Int32, mscorlib">
<value>24</value>
</data>
<metadata name="statusColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="statusColumn.HeaderText" xml:space="preserve">
<value>状态</value>
</data>
<data name="statusColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>30</value>
</data>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Name" xml:space="preserve">
<value>downloadLicenseServerLink</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel2.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="assignLicenceButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="releaseLicenseButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0" />&lt;Rows Styles="AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="&gt;&gt;summaryPanel.Name" xml:space="preserve">
<value>summaryPanel</value>
</data>
<data name="&gt;&gt;summaryPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.SummaryPanel.SummaryPanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;summaryPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;summaryPanel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>4</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>12, 12</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>916, 426</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="downloadLicenseServerLink" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="checkableDataGridView" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="tableLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="summaryPanel" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;Control Name="cancelButton" Row="2" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,73.85621,Percent,26.14379" />&lt;Rows Styles="Percent,100,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="downloadLicenseServerLink.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Left</value>
</data>
<data name="downloadLicenseServerLink.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="downloadLicenseServerLink.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="downloadLicenseServerLink.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="downloadLicenseServerLink.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 475</value>
</data>
<data name="downloadLicenseServerLink.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="downloadLicenseServerLink.Size" type="System.Drawing.Size, System.Drawing">
<value>274, 21</value>
</data>
<data name="downloadLicenseServerLink.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="downloadLicenseServerLink.Text" xml:space="preserve">
<value>下载 {0} 许可证服务器虚拟设备</value>
</data>
<data name="downloadLicenseServerLink.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Name" xml:space="preserve">
<value>downloadLicenseServerLink</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;downloadLicenseServerLink.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;assignLicenceButton.Name" xml:space="preserve">
<value>assignLicenceButton</value>
</data>
<data name="&gt;&gt;assignLicenceButton.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;assignLicenceButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;assignLicenceButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.Name" xml:space="preserve">
<value>releaseLicenseButton</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.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;releaseLicenseButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 361</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>670, 31</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel2.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="assignLicenceButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="releaseLicenseButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,AutoSize,0" />&lt;Rows Styles="AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="assignLicenceButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="assignLicenceButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="assignLicenceButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="assignLicenceButton.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 25</value>
</data>
<data name="assignLicenceButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="assignLicenceButton.Text" xml:space="preserve">
<value>分配许可证(&amp;A)...</value>
</data>
<data name="&gt;&gt;assignLicenceButton.Name" xml:space="preserve">
<value>assignLicenceButton</value>
</data>
<data name="&gt;&gt;assignLicenceButton.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;assignLicenceButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;assignLicenceButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="releaseLicenseButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="releaseLicenseButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="releaseLicenseButton.Location" type="System.Drawing.Point, System.Drawing">
<value>177, 3</value>
</data>
<data name="releaseLicenseButton.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 25</value>
</data>
<data name="releaseLicenseButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="releaseLicenseButton.Text" xml:space="preserve">
<value>释放许可证(&amp;R)</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.Name" xml:space="preserve">
<value>releaseLicenseButton</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.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;releaseLicenseButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;releaseLicenseButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="summaryPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="summaryPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="summaryPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>679, 3</value>
</data>
<data name="summaryPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>234, 424</value>
</data>
<data name="summaryPanel.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;summaryPanel.Name" xml:space="preserve">
<value>summaryPanel</value>
</data>
<data name="&gt;&gt;summaryPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.SummaryPanel.SummaryPanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;summaryPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;summaryPanel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="cancelButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="cancelButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>822, 470</value>
</data>
<data name="cancelButton.Size" type="System.Drawing.Size, System.Drawing">
<value>91, 25</value>
</data>
<data name="cancelButton.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="cancelButton.Text" xml:space="preserve">
<value>关闭(&amp;C)</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>4</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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>940, 450</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>12, 12, 12, 12</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>许可证管理器</value>
</data>
<data name="&gt;&gt;checkBoxColumn.Name" xml:space="preserve">
<value>checkBoxColumn</value>
</data>
<data name="&gt;&gt;checkBoxColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewCheckBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;poolColumn.Name" xml:space="preserve">
<value>poolColumn</value>
</data>
<data name="&gt;&gt;poolColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;productVersionColumn.Name" xml:space="preserve">
<value>productVersionColumn</value>
</data>
<data name="&gt;&gt;productVersionColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;statusImageColumn.Name" xml:space="preserve">
<value>statusImageColumn</value>
</data>
<data name="&gt;&gt;statusImageColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewImageColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;statusColumn.Name" xml:space="preserve">
<value>statusColumn</value>
</data>
<data name="&gt;&gt;statusColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>LicenseManager</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

@ -1,352 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Diagnostics;
using System.Linq;
using System.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Controls.CheckableDataGridView;
using XenAdmin.Controls.SummaryPanel;
using XenAdmin.Core;
using XenAdmin.Dialogs.LicenseManagerSelectionVerifiers;
using XenAdmin.Network;
using XenAPI;
namespace XenAdmin.Dialogs
{
public class LicenseManagerController
{
public ILicenseManagerView View { private get; set; }
public LicenseManagerController()
{
VerifierFactory = new LicenseSelectionVerifierFactory();
ReadOnlyView = HiddenFeatures.LicenseOperationsHidden;
}
public LicenseManagerController(ILicenseManagerView view)
{
View = view;
}
public SelectionVerifierFactory VerifierFactory { private get; set; }
public bool ReadOnlyView { get; private set; }
private void AddToGrid(List<IXenObject> dataToDraw)
{
View.DrawRowsInGrid(ConvertXenObjects(dataToDraw));
}
public void PopulateGrid(List<IXenObject> itemsToShow, List<IXenObject> selectedItems)
{
if(itemsToShow.Count < 1)
{
DisableAllButtons();
return;
}
var allItemsToShow = itemsToShow.ToList();
AddToGrid(allItemsToShow);
foreach (LicenseDataGridViewRow row in ConvertXenObjects(allItemsToShow).ConvertAll(r => r as LicenseDataGridViewRow))
{
UpdateButtonEnablement(new List<LicenseDataGridViewRow>{row});
}
CheckPreSelectedRows(selectedItems);
SelectAndSummariseSelectedRow(allItemsToShow, selectedItems);
}
public void Repopulate(List<IXenObject> itemsToShow, List<IXenObject> selectedItems)
{
View.ClearAllGridRows();
PopulateGrid(itemsToShow, selectedItems);
}
private void CheckPreSelectedRows(List<IXenObject> dataToCheck)
{
if (dataToCheck.Count < 1 || ReadOnlyView)
{
DisableAllButtons();
return;
}
View.DrawSelectedRowsAsChecked(ConvertXenObjects(dataToCheck).Where(r=>!r.Disabled).ToList());
UpdateButtonEnablement();
}
private void SetSummaryInformation(string information)
{
if(String.IsNullOrEmpty(information))
View.DrawSummaryInformation(String.Empty, false);
View.DrawSummaryInformation(information, true);
}
public void SummariseSelectedRow(CheckableDataGridViewRow dataToSummarise)
{
if(!dataToSummarise.XenObject.Connection.IsConnected)
{
View.DrawSummaryForHighlightedRow(dataToSummarise, new LicenseManagerSummaryComponent(), LaunchUrl(InvisibleMessages.LICENSE_BUY_URL), LaunchUrl(InvisibleMessages.CSS_URL));
SetSummaryInformation(Messages.POOL_OR_HOST_IS_NOT_CONNECTED);
return;
}
SummaryTextComponent component = BuildSummaryComponent(dataToSummarise);
View.DrawSummaryForHighlightedRow(dataToSummarise, component, LaunchUrl(InvisibleMessages.LICENSE_BUY_URL), LaunchUrl(InvisibleMessages.CSS_URL));
if(dataToSummarise.Disabled)
SetSummaryInformation(dataToSummarise.DisabledReason);
}
private void SelectAndSummariseSelectedRow(List<IXenObject> allData, List<IXenObject> selectedFromTree)
{
IXenObject xo = selectedFromTree.Count > 0 ? selectedFromTree.FirstOrDefault() : allData.FirstOrDefault();
View.DrawHighlightedRow(new LicenseDataGridViewRow(xo));
SummariseSelectedRow(new LicenseDataGridViewRow(xo));
}
public void SetStatusIcon(int rowIndex, LicenseDataGridViewRow.Status rowStatus)
{
View.DrawRowStatusIcon(rowIndex, rowStatus);
}
private void ShowPoolHostNotConnectedError()
{
using (var dlg = new ErrorDialog(Messages.SELECTED_HOST_POOL_NOT_CONNECTED))
dlg.ShowDialog(View.Parent);
}
private void SummariseDisconnectedRows(List<CheckableDataGridViewRow> rowsChecked)
{
//Refresh current row's details if the pool/host is no longer connected
CheckableDataGridViewRow row = rowsChecked.FirstOrDefault(r => r.Highlighted && !r.XenObject.Connection.IsConnected);
if (row != null)
SummariseSelectedRow(row);
}
public void AssignLicense(List<CheckableDataGridViewRow> rowsChecked)
{
if (rowsChecked.Any(r => !r.XenObject.Connection.IsConnected))
{
ShowPoolHostNotConnectedError();
SummariseDisconnectedRows(rowsChecked);
ResetButtonEnablement();
return;
}
var licenseRows = rowsChecked.ConvertAll(r => r as LicenseDataGridViewRow);
var row = licenseRows.FirstOrDefault();
var xenObjects = licenseRows.ConvertAll(r => r.XenObject);
if (row != null && xenObjects.Count > 0)
using (var ald = new AssignLicenseDialog(xenObjects,
row.LicenseServerAddress, row.LicenseServerPort, row.LicenseEdition))
ald.ShowDialog(View.Parent);
SummariseDisconnectedRows(rowsChecked);
ResetButtonEnablement();
}
public void ReleaseLicenses(List<CheckableDataGridViewRow> rowsChecked)
{
Debug.Assert(rowsChecked.Count > 0, "There must be one license selected to perform this operation");
List<LicenseDataGridViewRow> rowsUsingLicenseServer = rowsChecked.ConvertAll(r => r as LicenseDataGridViewRow).Where(
r => r.XenObject.Connection.IsConnected && r.HasLicenseServer).ToList();
if (rowsUsingLicenseServer.Count > 0)
{
var action = new ApplyLicenseEditionAction(rowsUsingLicenseServer.ConvertAll(r => r.XenObject),
Host.Edition.Free, null, null);
using (var actionProgress = new ActionProgressDialog(action, ProgressBarStyle.Marquee))
actionProgress.ShowDialog(View.Parent);
}
else
{
ShowPoolHostNotConnectedError();
}
SummariseDisconnectedRows(rowsChecked);
ResetButtonEnablement();
}
public void DownloadLicenseManager()
{
LaunchUrl(InvisibleMessages.LICENSE_SERVER_DOCS_LINK).Invoke();
}
private Action LaunchUrl(string url)
{
return delegate
{
try
{
Process.Start(url);
}
catch (Exception)
{
using (var dlg = new ErrorDialog(string.Format(Messages.LICENSE_SERVER_COULD_NOT_OPEN_LINK, url)))
dlg.ShowDialog(View.Parent);
}
};
}
protected virtual IMainWindow CommandInterface
{
get { return Program.MainWindow; }
}
private void SetRowInformation(List<LicenseDataGridViewRow> rows, string information)
{
foreach (LicenseDataGridViewRow row in rows)
{
if(row.Disabled)
continue;
View.DrawSelectedRowsAsChecked(rows.ConvertAll(r=>r as CheckableDataGridViewRow));
View.SetRowDisabledRowInfo(row.Index, information, !string.IsNullOrEmpty(information));
}
}
public void UpdateButtonEnablement()
{
List<LicenseDataGridViewRow> lRows = View.GetCheckedRows.ConvertAll(r => r as LicenseDataGridViewRow);
UpdateButtonEnablement(lRows);
}
public void UpdateButtonEnablement(List<LicenseDataGridViewRow> lRows)
{
//All buttons disabled?
if(lRows.Count < 1 || ReadOnlyView)
{
DisableAllButtons();
View.DrawViewAsReadOnly(ReadOnlyView);
return;
}
View.DrawViewAsReadOnly(ReadOnlyView);
LicenseSelectionVerifier verifier;
verifier = VerifierFactory.Verifier(SelectionVerifierFactory.Option.NotLive, lRows);
if (verifier.Status == LicenseSelectionVerifier.VerificationStatus.Error)
{
DisableAllButtons();
SetRowInformation(lRows, verifier.VerificationDetails());
return;
}
verifier = VerifierFactory.Verifier(SelectionVerifierFactory.Option.HaOn, lRows);
if (verifier.Status == LicenseSelectionVerifier.VerificationStatus.Error)
{
DisableAllButtons();
SetRowInformation(lRows, verifier.VerificationDetails());
return;
}
View.DrawAssignButtonAsDisabled(verifier.Status == LicenseSelectionVerifier.VerificationStatus.Error);
View.DrawReleaseButtonAsDisabled(!lRows.Any(r => r.IsUsingLicenseServer || r.CurrentLicenseState == LicenseStatus.HostState.PartiallyLicensed));
}
private void DisableAllButtons()
{
View.DrawAssignButtonAsDisabled(true);
View.DrawReleaseButtonAsDisabled(true);
}
private void ResetButtonEnablement()
{
DisableAllButtons();
View.DrawSelectedRowsAsChecked(View.GetCheckedRows);
}
private SummaryTextComponent BuildSummaryComponent(CheckableDataGridViewRow row)
{
LicenseManagerSummaryComponent component = new LicenseManagerSummaryComponent();
LicenseManagerSummaryDecorator licenseTypeDecorator = new LicenseManagerSummaryLicenseTypeDecorator(component, row);
LicenseManagerSummaryDecorator licenseSocketsDecorator = new LicenseManagerSummaryLicenseSocketsDecorator(licenseTypeDecorator, row);
LicenseManagerSummaryDecorator licenseExpiresDecorator = new LicenseManagerSummaryLicenseExpiresDecorator(licenseSocketsDecorator, row);
LicenseManagerSummaryDecorator licenseServerDecorator = new LicenseManagerSummaryLicenseServerDecorator(licenseExpiresDecorator, row);
return licenseServerDecorator;
}
private List<CheckableDataGridViewRow> ConvertXenObjects(IEnumerable<IXenObject> xenObjects)
{
List<CheckableDataGridViewRow> rows = new List<CheckableDataGridViewRow>();
foreach (IXenObject xenObject in xenObjects)
{
rows.Add(new LicenseDataGridViewRow(xenObject));
}
return rows;
}
private List<Host> RowsToHosts(IEnumerable<LicenseDataGridViewRow> rows)
{
List<Host> hosts = new List<Host>();
if (rows == null)
return hosts;
foreach (LicenseDataGridViewRow row in rows)
{
if(row.XenObject is Host)
hosts.Add(row.XenObject as Host);
if(row.XenObject is Pool)
{
Pool pool = row.XenObject as Pool;
hosts.AddRange(pool.Connection.Cache.Hosts);
}
}
return hosts;
}
public void Repopulate()
{
Repopulate(GetAllObjects(), new List<IXenObject>());
}
private List<IXenObject> GetAllObjects()
{
List<IXenObject> allObjects = new List<IXenObject>();
foreach (IXenConnection conn in ConnectionsManager.XenConnections)
{
if (conn == null || !conn.IsConnected)
continue;
Pool pool = Helpers.GetPool(conn);
if (pool == null)
allObjects.AddRange(conn.Cache.Hosts);
else
allObjects.Add(pool);
}
return allObjects;
}
}
}

View File

@ -1,184 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Windows.Forms;
using XenAdmin.Commands;
using XenAdmin.Core;
using XenAdmin.Network;
using XenAPI;
using XenCenterLib;
namespace XenAdmin.Dialogs
{
public class LicenseManagerLauncher
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private bool LicenseSummaryVisible { get; set; }
public IWin32Window Parent{private get; set;}
private DateTime LastCloseTime { get; set; }
private LicenseManager licenseManagerDialog { get; set; }
private readonly object licenseLock = new object();
protected virtual DateTime ReferenceTime
{
get { return DateTime.Now; }
}
protected virtual TimeSpan TimeSinceLastClose
{
get { return ReferenceTime - LastCloseTime; }
}
protected virtual bool ModalDialogVisible
{
get { return Win32Window.ModalDialogIsVisible(); }
}
protected virtual DialogResult LaunchDialog(IEnumerable<IXenObject> allObjects, IEnumerable<IXenObject> selectedObjects)
{
if (licenseManagerDialog == null)
return DialogResult.None;
return licenseManagerDialog.ShowDialog(Parent, allObjects.ToList(), selectedObjects.ToList());
}
protected virtual void RefreshDialog(IEnumerable<IXenObject> allObjects, IEnumerable<IXenObject> selectedObjects)
{
if(licenseManagerDialog == null)
return;
licenseManagerDialog.RefreshView(allObjects.ToList(), selectedObjects.ToList());
}
public LicenseManagerLauncher(IWin32Window parent)
{
Parent = parent;
LicenseSummaryVisible = false;
}
public bool LicenceDialogIsShowing
{
get { return licenseManagerDialog != null; }
}
private void LoadManagerDialog()
{
licenseManagerDialog = new LicenseManager(new LicenseManagerController());
}
public void LaunchIfRequired(bool nag, ChangeableList<IXenConnection> connections)
{
LaunchIfRequired(nag, connections, Enumerable.Empty<IXenObject>());
}
public void LaunchIfRequired(bool nag, ChangeableList<IXenConnection> connections, SelectedItemCollection selectedObjects)
{
if (selectedObjects != null && selectedObjects.AllItemsAre<IXenObject>(x => x is Pool || x is Host))
{
List<IXenObject> itemsSelected = selectedObjects.AsXenObjects<Pool>().ConvertAll(p => p as IXenObject);
itemsSelected.AddRange(selectedObjects.AsXenObjects<Host>().Where(h => Helpers.GetPool(h.Connection) == null).ToList().ConvertAll(h => h as IXenObject));
itemsSelected.AddRange(selectedObjects.AsXenObjects<Host>().Where(h => Helpers.GetPool(h.Connection) != null).ToList().ConvertAll(h => Helpers.GetPool(h.Connection)).ConvertAll(p => p as IXenObject).Distinct());
LaunchIfRequired(nag, connections, itemsSelected);
}
else
LaunchIfRequired(nag, connections);
}
private void LaunchIfRequired(bool nag, IEnumerable<IXenConnection> connections, IEnumerable<IXenObject> selectedObjects)
{
List<IXenObject> allObjects = new List<IXenObject>();
foreach (IXenConnection conn in connections)
{
if(conn == null)
continue;
if(!conn.IsConnected)
continue;
Pool pool = Helpers.GetPool(conn);
if (pool == null)
allObjects.AddRange(conn.Cache.Hosts);
else
allObjects.Add(pool);
}
LaunchIfRequired(nag, allObjects, selectedObjects);
}
private void LaunchIfRequired(bool nag, IEnumerable<IXenObject> allObjects, IEnumerable<IXenObject> selectedObjects)
{
lock (licenseLock)
{
if (!LicenseSummaryVisible)
{
LoadManagerDialog();
if (nag && TimeSinceLastClose < TimeSpan.FromSeconds(10))
{
// this nag was less than 10 seconds since we closed this dialog. Don't re-show.
return;
}
if (nag && ModalDialogVisible)
{
// if the add-server dialog is visible, then don't nag with the license-manager as it
// will appear above it.
return;
}
LicenseSummaryVisible = true;
log.Info("License summary not showing. Show it now.");
try
{
LaunchDialog(allObjects, selectedObjects);
}
finally
{
LicenseSummaryVisible = false;
LastCloseTime = ReferenceTime;
if(licenseManagerDialog != null)
{
licenseManagerDialog.Dispose();
licenseManagerDialog = null;
}
}
}
else
{
RefreshDialog(allObjects, selectedObjects);
}
}
}
}
}

View File

@ -1,64 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAdmin.Controls.CheckableDataGridView;
namespace XenAdmin.Dialogs.LicenseManagerLicenseRowComparers
{
public class ExpiryComparer : IComparer<CheckableDataGridViewRow>
{
public int Compare(CheckableDataGridViewRow x, CheckableDataGridViewRow y)
{
LicenseDataGridViewRow lx = x as LicenseDataGridViewRow;
LicenseDataGridViewRow ly = y as LicenseDataGridViewRow;
if (lx == null && ly != null)
return 1;
if (lx != null && ly == null)
return -1;
if (lx == null && ly == null)
return 0;
int result = lx.CurrentLicenseState.CompareTo(ly.CurrentLicenseState);
if (result == 0)
{
if (lx.CurrentLicenseState == LicenseStatus.HostState.RegularGrace || lx.CurrentLicenseState == LicenseStatus.HostState.UpgradeGrace)
result = lx.LicenseExpires.GetValueOrDefault().CompareTo(ly.LicenseExpires.GetValueOrDefault());
if (result == 0)
result = lx.XenObject.Name().CompareTo(ly.XenObject.Name());
}
return result;
}
}
}

View File

@ -1,43 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAdmin.Controls.CheckableDataGridView;
namespace XenAdmin.Dialogs.LicenseManagerLicenseRowComparers
{
public class NameColumnComparer : IComparer<CheckableDataGridViewRow>
{
public int Compare(CheckableDataGridViewRow x, CheckableDataGridViewRow y)
{
return x.XenObject.Name().CompareTo(y.XenObject.Name());
}
}
}

View File

@ -1,57 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAdmin.Controls.CheckableDataGridView;
namespace XenAdmin.Dialogs.LicenseManagerLicenseRowComparers
{
public class ProductColumnComparer : IComparer<CheckableDataGridViewRow>
{
public int Compare(CheckableDataGridViewRow x, CheckableDataGridViewRow y)
{
LicenseDataGridViewRow lx = x as LicenseDataGridViewRow;
LicenseDataGridViewRow ly = y as LicenseDataGridViewRow;
if (lx == null && ly != null)
return 1;
if (lx != null && ly == null)
return -1;
if (lx == null && ly == null)
return 0;
int nameValue = lx.LicenseName.CompareTo(ly.LicenseName);
return nameValue == 0 ? lx.LicenseProductVersion.CompareTo(ly.LicenseProductVersion) : nameValue;
}
}
}

View File

@ -1,409 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Threading;
using XenAdmin.Core;
using XenAdmin.Network;
using XenAPI;
namespace XenAdmin.Dialogs
{
public interface ILicenseStatus : IDisposable
{
LicenseStatus.HostState CurrentState { get; }
Host.Edition LicenseEdition { get; }
TimeSpan LicenseExpiresIn { get; }
TimeSpan LicenseExpiresExactlyIn { get; }
DateTime? ExpiryDate { get; }
event Action ItemUpdated;
bool Updated { get; }
void BeginUpdate();
Host LicensedHost { get; }
string LicenseEntitlements { get; }
}
public class LicenseStatus : ILicenseStatus
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public enum HostState
{
Unknown,
Expired,
ExpiresSoon,
RegularGrace,
UpgradeGrace,
Licensed,
PartiallyLicensed,
Free,
Unavailable
}
private readonly EventHandlerList _events = new EventHandlerList();
private const string StatusUpdatedEventKey = "LicenseStatusStatusUpdatedEventKey";
public Host LicensedHost { get; private set; }
public static bool IsInfinite(TimeSpan span)
{
return span.TotalDays >= 3653;
}
public static bool IsGraceLicence(TimeSpan span)
{
return span.TotalDays < 30;
}
private IXenObject XenObject { get; }
public bool Updated { get; private set; }
public LicenseStatus(IXenObject xo)
{
SetDefaultOptions();
XenObject = xo;
if (XenObject is Host host)
LicensedHost = host;
if (XenObject is Pool pool)
SetMinimumLicenseValueHost(pool);
if (XenObject != null)
{
XenObject.Connection.ConnectionStateChanged -= Connection_ConnectionStateChanged;
XenObject.Connection.ConnectionStateChanged += Connection_ConnectionStateChanged;
}
}
private void Connection_ConnectionStateChanged(IXenConnection conn)
{
if (LicensedHost != null)
{
TriggerStatusUpdatedEvent();
}
}
private void SetMinimumLicenseValueHost(Pool pool)
{
LicensedHost = pool.Connection.Resolve(pool.master);
if(LicensedHost == null)
return;
foreach (Host host in pool.Connection.Cache.Hosts)
{
if(host.LicenseExpiryUTC() < LicensedHost.LicenseExpiryUTC())
LicensedHost = host;
}
}
private void SetDefaultOptions()
{
CurrentState = HostState.Unknown;
Updated = false;
LicenseExpiresExactlyIn = new TimeSpan();
}
public void BeginUpdate()
{
SetDefaultOptions();
ThreadPool.QueueUserWorkItem(GetServerTime, LicensedHost);
}
private void GetServerTime(object state)
{
Host host = state as Host;
if (host?.Connection?.Session == null)
{
log.Error("Will not fetch server time: host or connection could not be resolved");
return;
}
try
{
//Note we're using the get_servertime call which returns the UTC time
var serverTime = Host.get_servertime(host.Connection.Session, host.opaque_ref);
if (LicensedHost != null)
{
//ServerTime is UTC
DateTime currentRefTime = serverTime;
LicenseExpiresExactlyIn = LicensedHost.LicenseExpiryUTC().Subtract(currentRefTime);
CurrentState = CalculateCurrentState();
Updated = true;
TriggerStatusUpdatedEvent();
}
}
catch (Exception e)
{
log.Error($"Failed to fetch server time for host {host.name_label}: ", e);
}
}
private void TriggerStatusUpdatedEvent()
{
if (_events[StatusUpdatedEventKey] is Action handler)
handler.Invoke();
}
private bool InRegularGrace
{
get
{
return LicensedHost.license_params != null && LicensedHost.license_params.ContainsKey("grace") && LicenseExpiresIn.Ticks > 0 && LicensedHost.license_params["grace"] == "regular grace";
}
}
private bool InUpgradeGrace
{
get
{
return LicensedHost.license_params != null && LicensedHost.license_params.ContainsKey("grace") && LicenseExpiresIn.Ticks > 0 && LicensedHost.license_params["grace"] == "upgrade grace";
}
}
internal static bool PoolIsMixedFreeAndExpiring(IXenObject xenObject)
{
if (xenObject is Pool)
{
if (xenObject.Connection.Cache.Hosts.Length == 1)
return false;
int freeCount = xenObject.Connection.Cache.Hosts.Count(h => Host.GetEdition(h.edition) == Host.Edition.Free);
if (freeCount == 0 || freeCount < xenObject.Connection.Cache.Hosts.Length)
return false;
var expiryGroups = (from Host h in xenObject.Connection.Cache.Hosts
let exp = h.LicenseExpiryUTC()
group h by exp
into g
select new { ExpiryDate = g.Key, Hosts = g }).ToList();
if (expiryGroups.Count > 1)
{
expiryGroups = expiryGroups.OrderBy(g => g.ExpiryDate).ToList();
if ((expiryGroups.ElementAt(1).ExpiryDate - expiryGroups.ElementAt(0).ExpiryDate).TotalDays > 30)
return true;
}
}
return false;
}
internal static bool PoolIsPartiallyLicensed(IXenObject xenObject)
{
if (xenObject is Pool)
{
if (xenObject.Connection.Cache.Hosts.Length == 1)
return false;
int freeCount = xenObject.Connection.Cache.Hosts.Count(h => Host.GetEdition(h.edition) == Host.Edition.Free);
return freeCount > 0 && freeCount < xenObject.Connection.Cache.Hosts.Length;
}
return false;
}
internal static bool PoolHasMixedLicenses(IXenObject xenObject)
{
if (xenObject is Pool pool)
{
if (xenObject.Connection.Cache.Hosts.Length == 1)
return false;
if (xenObject.Connection.Cache.Hosts.Any(h => Host.GetEdition(h.edition) == Host.Edition.Free))
return false;
var licenseGroups = from Host h in xenObject.Connection.Cache.Hosts
let ed = Host.GetEdition(h.edition)
group h by ed;
return licenseGroups.Count() > 1;
}
return false;
}
private HostState CalculateCurrentState()
{
if (ExpiryDate.HasValue && ExpiryDate.Value.Day == 1 && ExpiryDate.Value.Month == 1 && ExpiryDate.Value.Year == 1970)
{
return HostState.Unavailable;
}
if (PoolIsPartiallyLicensed(XenObject))
return HostState.PartiallyLicensed;
if (LicenseEdition == Host.Edition.Free)
return HostState.Free;
if (!IsGraceLicence(LicenseExpiresIn))
return HostState.Licensed;
if (IsInfinite(LicenseExpiresIn))
{
return HostState.Licensed;
}
if (LicenseExpiresIn.Ticks <= 0)
{
return HostState.Expired;
}
if (IsGraceLicence(LicenseExpiresIn))
{
if (InRegularGrace)
return HostState.RegularGrace;
if (InUpgradeGrace)
return HostState.UpgradeGrace;
return HostState.ExpiresSoon;
}
return LicenseEdition == Host.Edition.Free ? HostState.Free : HostState.Licensed;
}
#region ILicenseStatus Members
public event Action ItemUpdated
{
add => _events.AddHandler(StatusUpdatedEventKey, value);
remove => _events.RemoveHandler(StatusUpdatedEventKey, value);
}
public Host.Edition LicenseEdition => Host.GetEdition(LicensedHost.edition);
public HostState CurrentState { get; private set; }
public TimeSpan LicenseExpiresExactlyIn { get; private set; }
/// <summary>
/// License expiry, just days, hrs, mins
/// </summary>
public TimeSpan LicenseExpiresIn
{
get
{
return new TimeSpan(LicenseExpiresExactlyIn.Days, LicenseExpiresExactlyIn.Hours, LicenseExpiresExactlyIn.Minutes, 0, 0);
}
}
public DateTime? ExpiryDate
{
get
{
if (LicensedHost.license_params != null && LicensedHost.license_params.ContainsKey("expiry"))
return LicensedHost.LicenseExpiryUTC().ToLocalTime();
return null;
}
}
public string LicenseEntitlements
{
get
{
var hosts = XenObject.Connection.Cache.Hosts;
var entitlements = new List<string>();
string supportLevel = null;
if (CurrentState == HostState.Licensed)
{
if (hosts.All(h => h.EnterpriseFeaturesEnabled()))
supportLevel = Messages.LICENSE_ENTERPRISE_FEATURES_ENABLED;
else if (hosts.All(h => h.DesktopPlusFeaturesEnabled()))
supportLevel = string.Format(Messages.LICENSE_DESKTOP_PLUS_FEATURES_ENABLED, BrandManager.CompanyNameLegacy);
else if (hosts.All(h => h.DesktopFeaturesEnabled()))
supportLevel = string.Format(Messages.LICENSE_DESKTOP_FEATURES_ENABLED, BrandManager.CompanyNameLegacy);
else if (hosts.All(h => h.DesktopCloudFeaturesEnabled()))
supportLevel = string.Format(Messages.LICENSE_DESKTOP_CLOUD_FEATURES_ENABLED, BrandManager.CompanyNameLegacy);
else if (hosts.All(h => h.PremiumFeaturesEnabled()))
supportLevel = Messages.LICENSE_PREMIUM_FEATURES_ENABLED;
else if (hosts.All(h => h.StandardFeaturesEnabled()))
supportLevel = Messages.LICENSE_STANDARD_FEATURES_ENABLED;
else if (hosts.All(h => h.EligibleForSupport()))
supportLevel = Messages.LICENSE_STANDARD_FEATURES_ENABLED;
if (supportLevel != null)
{
entitlements.Add(hosts.Any(Helpers.NileOrGreater) ? Messages.LICENSE_MANAGER_LICENSED : Messages.LICENSE_ELIGIBLE_FOR_SUPPORT);
entitlements.Add(supportLevel);
}
}
if (CurrentState == HostState.Free || string.IsNullOrEmpty(supportLevel))
{
if (hosts.Any(Helpers.NileOrGreater))
{
// CP-43000: for hosts in preview we show "Licensed" even though they're not
entitlements.Add(hosts.Any(a => a.IsInPreviewRelease()) ? $"{Messages.LICENSE_MANAGER_LICENSED}{Environment.NewLine}{Messages.LICENSE_MANAGER_TRIAL_EDITION}" : Messages.LICENSE_MANAGER_TRIAL_LICENSE);
}
else
{
entitlements.Add(Messages.LICENSE_NOT_ELIGIBLE_FOR_SUPPORT);
}
}
if (hosts.Any(h => h.CanShowTrialEditionUpsell()))
entitlements.Add(Messages.TRIAL_EDITION_UPSELLING_MESSAGE);
return entitlements.Count == 0 ? Messages.UNKNOWN : string.Join(Environment.NewLine, entitlements);
}
}
#endregion
#region IDisposable Members
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private bool disposed;
public void Dispose(bool disposing)
{
if(!disposed)
{
if(disposing)
{
if (XenObject != null && XenObject.Connection != null)
XenObject.Connection.ConnectionStateChanged -= Connection_ConnectionStateChanged;
_events.Dispose();
}
disposed = true;
}
}
#endregion
}
}

View File

@ -1,65 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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;
namespace XenAdmin.Dialogs.LicenseManagerSelectionVerifiers
{
/// <summary>
/// Verify that multiselected hosts can use the license server
///
/// </summary>
public class CanUseLicenseServerVerifier : LicenseSelectionVerifier
{
public CanUseLicenseServerVerifier(List<LicenseDataGridViewRow> rowsToVerify) : base(rowsToVerify){}
public override string VerificationDetails()
{
return Status == VerificationStatus.Error
? string.Format(Messages.LICENSE_NO_MULTISELECT_ACTIVATE, BrandManager.ProductBrand)
: string.Empty;
}
public override void Verify()
{
int licenseServerRows = RowsToVerify.Where(r => r.CanUseLicenseServer).ToList().Count;
if (licenseServerRows < 2 && licenseServerRows > 0 && licenseServerRows == RowsToVerify.Count)
{
Status = VerificationStatus.OK;
return;
}
Status = VerificationStatus.Error;
}
}
}

View File

@ -1,57 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Core;
namespace XenAdmin.Dialogs.LicenseManagerSelectionVerifiers
{
public class HaOnVerifier : LicenseSelectionVerifier
{
public HaOnVerifier(List<LicenseDataGridViewRow> hostsToVerify) : base(hostsToVerify) { }
public override void Verify()
{
if (RowsToVerify.Select(r => Helpers.GetPoolOfOne(r.XenObject.Connection)).Any(pool => pool != null && pool.ha_enabled))
{
Status = VerificationStatus.Error;
return;
}
Status = VerificationStatus.OK;
}
public override string VerificationDetails()
{
return Status == VerificationStatus.Error ? Messages.LICENSE_NO_HA : String.Empty;
}
}
}

View File

@ -1,69 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAPI;
namespace XenAdmin.Dialogs.LicenseManagerSelectionVerifiers
{
public abstract class LicenseSelectionVerifier
{
protected List<LicenseDataGridViewRow> RowsToVerify { get; set; }
protected LicenseSelectionVerifier(List<LicenseDataGridViewRow> hostsToVerify)
{
Status = VerificationStatus.Unchecked;
RowsToVerify = hostsToVerify;
}
protected List<Host> AllHostsRepresentedByRows()
{
List<Host> hosts = new List<Host>();
foreach (LicenseDataGridViewRow row in RowsToVerify)
{
hosts.AddRange(row.RepresentedHosts);
}
return hosts;
}
public enum VerificationStatus
{
OK,
Error,
Unchecked
}
public VerificationStatus Status { get; protected set; }
public abstract void Verify();
public abstract string VerificationDetails();
}
}

View File

@ -1,56 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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;
namespace XenAdmin.Dialogs.LicenseManagerSelectionVerifiers
{
public class NotLiveVerifier : LicenseSelectionVerifier
{
public NotLiveVerifier(List<LicenseDataGridViewRow> hostsToVerify) : base(hostsToVerify) { }
public override void Verify()
{
if (AllHostsRepresentedByRows().All(host => !host.IsLive()))
{
Status = VerificationStatus.Error;
return;
}
Status = VerificationStatus.OK;
}
public override string VerificationDetails()
{
return Status == VerificationStatus.Error ? Messages.LICENSE_HOST_NOT_LIVE : String.Empty;
}
}
}

View File

@ -1,69 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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;
namespace XenAdmin.Dialogs.LicenseManagerSelectionVerifiers
{
public abstract class SelectionVerifierFactory
{
public enum Option
{
CanUseLicenseServer,
HaOn,
NotLive
}
public abstract LicenseSelectionVerifier Verifier(Option option, List<LicenseDataGridViewRow> rows);
}
public class LicenseSelectionVerifierFactory : SelectionVerifierFactory
{
public override LicenseSelectionVerifier Verifier(Option option, List<LicenseDataGridViewRow> rows)
{
LicenseSelectionVerifier verifier = GetCorrectVerifier(option, rows);
verifier.Verify();
return verifier;
}
private LicenseSelectionVerifier GetCorrectVerifier(Option option, List<LicenseDataGridViewRow> rows)
{
if (option == Option.CanUseLicenseServer)
return new CanUseLicenseServerVerifier(rows);
if (option == Option.HaOn)
return new HaOnVerifier(rows);
if (option == Option.NotLive)
return new NotLiveVerifier(rows);
throw new ArgumentException("No valid option was provided");
}
}
}

View File

@ -1,43 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Text;
using XenAdmin.Controls.SummaryPanel;
namespace XenAdmin.Dialogs
{
public class LicenseManagerSummaryComponent : SummaryTextComponent
{
public override StringBuilder BuildSummary()
{
return new StringBuilder();
}
}
}

View File

@ -1,143 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Diagnostics;
using System.Text;
using System.Windows.Forms;
using XenAdmin.Controls.CheckableDataGridView;
using XenAdmin.Controls.SummaryPanel;
using XenAdmin.Core;
namespace XenAdmin.Dialogs
{
public class LicenseManagerSummaryDecorator : SummaryTextDecorator
{
public LicenseManagerSummaryDecorator(SummaryTextComponent component, CheckableDataGridViewRow row)
: base(component)
{
Row = row as LicenseDataGridViewRow;
Debug.Assert(Row != null && row != null, "Failure to cast CheckableDataGridViewRow to LicenseDataGridViewRow");
}
protected LicenseDataGridViewRow Row { get; private set; }
}
public class LicenseManagerSummaryLicenseServerDecorator : LicenseManagerSummaryDecorator
{
public LicenseManagerSummaryLicenseServerDecorator(SummaryTextComponent component, CheckableDataGridViewRow row) : base(component, row) { }
private LinkArea linkArea = new LinkArea(0, 0);
public override StringBuilder BuildSummary()
{
StringBuilder sb = base.BuildSummary();
if (String.IsNullOrEmpty(Row.LicenseServer))
return sb;
sb.AppendLine(Messages.LICENSE_MANAGER_SUMMARY_LICENSE_SERVER);
linkArea.Start = sb.Length;
sb.AppendLine(Row.LicenseServer);
linkArea.Length = Row.LicenseServerAddress.ToLower() == "localhost" ? 0 : Row.LicenseServerAddress.Length;
return sb.AppendLine();
}
public override LinkArea GetLinkArea()
{
return linkArea;
}
public override string GetLink()
{
if (string.IsNullOrEmpty(Row.LicenseServer) || Row.LicenseServerAddress.ToLower() == "localhost")
return string.Empty;
return string.Format(Messages.LICENSE_SERVER_WEB_CONSOLE_FORMAT, Row.LicenseServerAddress, XenAPI.Host.LicenseServerWebConsolePort);
}
}
public class LicenseManagerSummaryLicenseTypeDecorator : LicenseManagerSummaryDecorator
{
public LicenseManagerSummaryLicenseTypeDecorator(SummaryTextComponent component, CheckableDataGridViewRow row) : base(component, row) { }
public override StringBuilder BuildSummary()
{
StringBuilder sb = base.BuildSummary();
sb.AppendLine(Messages.LICENSE_MANAGER_SUMMARY_LICENSE_TYPE);
sb.AppendLine(Row.LicenseName);
return sb.AppendLine();
}
}
public class LicenseManagerSummaryLicenseSocketsDecorator : LicenseManagerSummaryDecorator
{
public LicenseManagerSummaryLicenseSocketsDecorator(SummaryTextComponent component, CheckableDataGridViewRow row) : base(component, row) { }
public override StringBuilder BuildSummary()
{
StringBuilder sb = base.BuildSummary();
sb.AppendLine(Messages.LICENSE_MANAGER_SUMMARY_LICENSE_SOCKETS);
sb.AppendLine(Row.NumberOfSockets.ToString());
return sb.AppendLine();
}
}
public class LicenseManagerSummaryLicenseExpiresDecorator : LicenseManagerSummaryDecorator
{
public LicenseManagerSummaryLicenseExpiresDecorator(SummaryTextComponent component, CheckableDataGridViewRow row) : base(component, row) { }
public override StringBuilder BuildSummary()
{
StringBuilder sb = base.BuildSummary();
if(Row.CurrentLicenseState == LicenseStatus.HostState.Free)
return sb;
sb.AppendLine(Messages.LICENSE_MANAGER_SUMMARY_LICENSE_EXPIRES);
if(Row.LicenseExpires.HasValue)
{
if(LicenseStatus.IsInfinite(Row.LicenseExpiresIn))
{
sb.AppendLine(Messages.NEVER);
}
else
{
string date = HelpersGUI.DateTimeToString(Row.LicenseExpires.Value, Messages.DATEFORMAT_DMY_LONG, true);
sb.AppendLine(date);
}
}
else
sb.AppendLine(Messages.GENERAL_UNKNOWN);
return sb.AppendLine();
}
}
}

View File

@ -160,17 +160,6 @@ namespace XenAdmin.Dialogs
}
}
// Are there any hosts which are forbidden from masking their CPUs for licensing reasons?
// If so, we need to show upsell.
if (null != supporters.Find(host =>
!PoolJoinRules.CompatibleCPUs(host, coordinator) &&
Helpers.FeatureForbidden(host, Host.RestrictCpuMasking) &&
!PoolJoinRules.FreeHostPaidCoordinator(host, coordinator, false))) // in this case we can upgrade the license and then mask the CPU
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_CPUMASKING, this);
return;
}
if (!Program.RunInAutomatedTestMode)
{
var hosts1 = supporters.FindAll(host => PoolJoinRules.FreeHostPaidCoordinator(host, coordinator, false));

View File

@ -49,7 +49,6 @@ namespace XenAdmin.Dialogs.OptionsPages
labelNoPlugins.Visible = false;
labelIntro.Text = string.Format(labelIntro.Text, BrandManager.BrandConsole);
linkLabel1.Text = string.Format(linkLabel1.Text, BrandManager.BrandConsole);
linkLabel1.Visible = !HiddenFeatures.LinkLabelHidden;
}
public void Build()

View File

@ -53,9 +53,11 @@ namespace XenAdmin.Dialogs
foreach (string warning in _warnings)
{
var row = new LicenseDataGridViewRow();
row.Cells.Add(new DataGridViewTextBoxCell {Value = warning});
rows.Add(row);
throw new Exception("Warum wird hier Lizenz benutzt im Quellcode?");
//var row = new LicenseDataGridViewRow();
//row.Cells.Add(new DataGridViewTextBoxCell {Value = warning});
//rows.Add(row);
}
dataGridViewEx1.Rows.AddRange(rows.ToArray());

View File

@ -61,8 +61,6 @@ namespace XenAdmin.Dialogs
private VDISizeLocationPage vdiSizeLocation;
private VMHAEditPage VMHAEditPage;
private GeneralEditPage GeneralEditPage;
private UpsellPage PerfmonAlertUpsellEditPage;
private UpsellPage PerfmonAlertOptionsUpsellEditPage;
private PerfmonAlertOptionsPage PerfmonAlertOptionsEditPage;
private HostPowerONEditPage HostPowerONEditPage;
private NewPolicySnapshotFrequencyPage newPolicySnapshotFrequencyPage1;
@ -70,7 +68,6 @@ namespace XenAdmin.Dialogs
private NewVMGroupVMsPage<VMSS> newVMSSVMsPage1;
private NewVMGroupVMsPage<VM_appliance> newVMApplianceVMsPage1;
private NewVMApplianceVMOrderAndDelaysPage newVmApplianceVmOrderAndDelaysPage1;
private UpsellPage GpuUpsellEditPage;
private GpuEditPage GpuEditPage;
private PoolGpuEditPage PoolGpuEditPage;
private VMEnlightenmentEditPage VMEnlightenmentEditPage;
@ -136,7 +133,7 @@ namespace XenAdmin.Dialogs
ShowTab(GeneralEditPage = new GeneralEditPage());
if (!isVmAppliance && !isVmss)
ShowTab(CustomFieldsEditPage = new CustomFieldsDisplayPage {AutoScroll = true});
ShowTab(CustomFieldsEditPage = new CustomFieldsDisplayPage { AutoScroll = true });
if (isVm)
{
@ -149,39 +146,12 @@ namespace XenAdmin.Dialogs
if (isVm || isHost || isSr)
{
if (Helpers.FeatureForbidden(_xenObjectCopy, Host.RestrictAlerts))
{
PerfmonAlertUpsellEditPage = new UpsellPage
{
Image = Images.StaticImages._000_Alert2_h32bit_16,
Text = Messages.ALERTS,
BlurbText = Messages.UPSELL_BLURB_ALERTS
};
ShowTab(PerfmonAlertUpsellEditPage);
}
else
{
ShowTab(PerfmonAlertEditPage = new PerfmonAlertEditPage {AutoScroll = true});
}
ShowTab(PerfmonAlertEditPage = new PerfmonAlertEditPage { AutoScroll = true });
}
if (isPoolOrStandalone)
{
if (Helpers.FeatureForbidden(_xenObjectCopy, Host.RestrictAlerts))
{
PerfmonAlertOptionsUpsellEditPage = new UpsellPage
{
Image = Images.StaticImages._000_Email_h32bit_16,
Text = Messages.EMAIL_OPTIONS,
BlurbText = Messages.UPSELL_BLURB_ALERTS
};
ShowTab(PerfmonAlertOptionsUpsellEditPage);
}
else
{
ShowTab(PerfmonAlertOptionsEditPage = new PerfmonAlertOptionsPage());
}
ShowTab(PerfmonAlertOptionsEditPage = new PerfmonAlertOptionsPage());
}
if (isHost)
@ -226,21 +196,8 @@ namespace XenAdmin.Dialogs
if (theVm.CanHaveGpu())
{
if (Helpers.FeatureForbidden(_xenObjectCopy, Host.RestrictGpu))
{
GpuUpsellEditPage = new UpsellPage
{
Image = Images.StaticImages._000_GetMemoryInfo_h32bit_16,
Text = Messages.GPU,
BlurbText = Messages.UPSELL_BLURB_GPU
};
ShowTab(GpuUpsellEditPage);
}
else
{
if(Helpers.GpusAvailable(connection))
ShowTab(GpuEditPage = new GpuEditPage());
}
if (Helpers.GpusAvailable(connection))
ShowTab(GpuEditPage = new GpuEditPage());
}
if (theVm.IsHVM())
@ -268,9 +225,9 @@ namespace XenAdmin.Dialogs
if (isVmss)
{
ShowTab(newVMSSVMsPage1 = new NewVMGroupVMsPage<VMSS> {Pool = pool});
ShowTab(newVMSSVMsPage1 = new NewVMGroupVMsPage<VMSS> { Pool = pool });
ShowTab(newPolicyVMSSTypePage1 = new NewPolicySnapshotTypePage());
newPolicySnapshotFrequencyPage1 = new NewPolicySnapshotFrequencyPage {Connection = pool.Connection};
newPolicySnapshotFrequencyPage1 = new NewPolicySnapshotFrequencyPage { Connection = pool.Connection };
newPolicySnapshotFrequencyPage1.Populated += EditPage_Populated;
ShowTab(newPolicySnapshotFrequencyPage1);
}
@ -307,7 +264,7 @@ namespace XenAdmin.Dialogs
using (var dialog = new ActionProgressDialog(
new DelegatedAsyncAction(vdi.Connection, Messages.DEVICE_POSITION_SCANNING,
Messages.DEVICE_POSITION_SCANNING, Messages.DEVICE_POSITION_SCANNED,
delegate(Session session)
delegate (Session session)
{
foreach (VBDEditPage page in vbdEditPages)
page.UpdateDevicePositions(session);
@ -397,7 +354,7 @@ namespace XenAdmin.Dialogs
actions);
_action.SetObject(_xenObjectCopy);
_action.Completed += action_Completed;
Close();
@ -506,7 +463,7 @@ namespace XenAdmin.Dialogs
GpuEditPage.ShowHideWarnings();
return;
}
if (verticalTabs.SelectedItem == usbEditPage && VMHAEditPage != null)
{
usbEditPage.SelectedPriority = VMHAEditPage.SelectedPriority;

View File

@ -1,141 +0,0 @@
namespace XenAdmin.Dialogs
{
partial class PvsCacheConfigurationDialog
{
/// <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(PvsCacheConfigurationDialog));
this.BlurbLabel = new System.Windows.Forms.Label();
this.AddButton = new System.Windows.Forms.Button();
this.addSiteButton = new System.Windows.Forms.Button();
this.ContentPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
this.splitContainer.Panel1.SuspendLayout();
this.splitContainer.Panel2.SuspendLayout();
this.splitContainer.SuspendLayout();
this.blueBorder.SuspendLayout();
this.SuspendLayout();
//
// ContentPanel
//
resources.ApplyResources(this.ContentPanel, "ContentPanel");
this.ContentPanel.Controls.Add(this.addSiteButton);
//
// verticalTabs
//
this.verticalTabs.BorderStyle = System.Windows.Forms.BorderStyle.None;
resources.ApplyResources(this.verticalTabs, "verticalTabs");
this.verticalTabs.MouseClick += new System.Windows.Forms.MouseEventHandler(this.verticalTabs_MouseClick);
this.verticalTabs.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.verticalTabs_DrawItem);
this.verticalTabs.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verticalTabs_MouseMove);
//
// cancelButton
//
this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
resources.ApplyResources(this.cancelButton, "cancelButton");
//
// okButton
//
resources.ApplyResources(this.okButton, "okButton");
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// splitContainer
//
this.splitContainer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
resources.ApplyResources(this.splitContainer, "splitContainer");
//
// splitContainer.Panel1
//
this.splitContainer.Panel1.BackColor = System.Drawing.SystemColors.Window;
this.splitContainer.Panel1.Controls.Add(this.AddButton);
this.splitContainer.Panel1.Resize += new System.EventHandler(this.splitContainer_Panel1_Resize);
//
// blueBorder
//
resources.ApplyResources(this.blueBorder, "blueBorder");
//
// BlurbLabel
//
resources.ApplyResources(this.BlurbLabel, "BlurbLabel");
this.BlurbLabel.Name = "BlurbLabel";
this.BlurbLabel.UseMnemonic = false;
//
// AddButton
//
resources.ApplyResources(this.AddButton, "AddButton");
this.AddButton.BackColor = System.Drawing.SystemColors.Window;
this.AddButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.AddButton.FlatAppearance.BorderSize = 0;
this.AddButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.AddButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
this.AddButton.Image = global::XenAdmin.Properties.Resources._000_AddSite_h32bit_16;
this.AddButton.Name = "AddButton";
this.AddButton.UseVisualStyleBackColor = false;
this.AddButton.Click += new System.EventHandler(this.AddButton_Click);
//
// addSiteButton
//
resources.ApplyResources(this.addSiteButton, "addSiteButton");
this.addSiteButton.BackColor = System.Drawing.Color.Transparent;
this.addSiteButton.Cursor = System.Windows.Forms.Cursors.Hand;
this.addSiteButton.FlatAppearance.BorderSize = 0;
this.addSiteButton.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Transparent;
this.addSiteButton.FlatAppearance.MouseOverBackColor = System.Drawing.Color.Transparent;
this.addSiteButton.Image = global::XenAdmin.Properties.Resources._000_AddSite_h32bit_16;
this.addSiteButton.Name = "addSiteButton";
this.addSiteButton.UseVisualStyleBackColor = false;
this.addSiteButton.Click += new System.EventHandler(this.AddButton_Click);
//
// PvsCacheConfigurationDialog
//
resources.ApplyResources(this, "$this");
this.Controls.Add(this.BlurbLabel);
this.Name = "PvsCacheConfigurationDialog";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.PvsCacheConfigurationDialog_FormClosed);
this.Controls.SetChildIndex(this.okButton, 0);
this.Controls.SetChildIndex(this.cancelButton, 0);
this.Controls.SetChildIndex(this.splitContainer, 0);
this.Controls.SetChildIndex(this.BlurbLabel, 0);
this.ContentPanel.ResumeLayout(false);
this.ContentPanel.PerformLayout();
this.splitContainer.Panel1.ResumeLayout(false);
this.splitContainer.Panel1.PerformLayout();
this.splitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
this.splitContainer.ResumeLayout(false);
this.blueBorder.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Label BlurbLabel;
private System.Windows.Forms.Button AddButton;
private System.Windows.Forms.Button addSiteButton;
}
}

View File

@ -1,357 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Drawing;
using System.Linq;
using System.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Controls;
using XenAdmin.Core;
using XenAPI;
using XenAdmin.Network;
using XenAdmin.SettingsPanels;
namespace XenAdmin.Dialogs
{
public partial class PvsCacheConfigurationDialog : VerticallyTabbedDialog
{
public PvsCacheConfigurationDialog(IXenConnection connection)
:base(connection)
{
InitializeComponent();
System.Diagnostics.Debug.Assert(connection != null);
Text = string.Format(Messages.PVS_CACHE_CONFIG_DIALOG_TITLE, connection.Name);
Rebuild();
this.connection.Cache.RegisterCollectionChanged<PVS_site>(PvsSiteCollectionChanged);
}
protected override string GetTabTitle(VerticalTabs.IVerticalTab verticalTab)
{
PvsCacheConfigurationPage page = verticalTab as PvsCacheConfigurationPage;
if (page != null)
{
return page.Text;
}
return base.GetTabTitle(verticalTab);
}
private void Rebuild()
{
ContentPanel.SuspendLayout();
verticalTabs.BeginUpdate();
try
{
verticalTabs.Items.Clear();
var pvsSites = connection.Cache.PVS_sites.ToList();
pvsSites.Sort();
foreach (var pvsSite in pvsSites)
{
NewPage(pvsSite);
}
}
finally
{
ContentPanel.ResumeLayout();
verticalTabs.EndUpdate();
}
if (verticalTabs.Items.Count > 0)
verticalTabs.SelectedIndex = 0;
ResizeVerticalTabs(verticalTabs.Items.Count);
verticalTabs.AdjustItemTextBounds = GetItemTextBounds;
}
protected Rectangle GetItemTextBounds(Rectangle itemBounds)
{
return new Rectangle(itemBounds.X, itemBounds.Y, itemBounds.Width - 20, itemBounds.Height);
}
private PvsCacheConfigurationPage NewPage(PVS_site pvsSite)
{
var existingTabNames = (from PvsCacheConfigurationPage page in verticalTabs.Items select page.Text).ToList();
PvsCacheConfigurationPage editPage = new PvsCacheConfigurationPage(connection, existingTabNames);
var pvsSiteCopy = pvsSite != null ? pvsSite.Clone() : null;
editPage.SetXenObjects(pvsSite, pvsSiteCopy);
editPage.Changed += SomethingChangedOnPage;
editPage.DeleteButtonClicked += DeleteButtonClickedOnPage;
ShowTab(editPage);
RefreshButtons();
return editPage;
}
private void ShowTab(IEditPage editPage)
{
var pageAsControl = (Control)editPage;
ContentPanel.Controls.Add(pageAsControl);
pageAsControl.BackColor = Color.Transparent;
pageAsControl.Dock = DockStyle.Fill;
verticalTabs.Items.Add(editPage);
}
void DeletePage(PvsCacheConfigurationPage page)
{
// try to delete the site (asks user for confirmation), also passing the site name, in case it has changed
if (!DeleteSite(page.PvsSite, page.Text))
return;
int selectedIndex = verticalTabs.SelectedIndex;
verticalTabs.Items.Remove(page);
verticalTabs.SelectedIndex = selectedIndex < verticalTabs.Items.Count - 1 ? selectedIndex : verticalTabs.Items.Count - 1;
page.Changed -= SomethingChangedOnPage;
page.DeleteButtonClicked -= DeleteButtonClickedOnPage;
ContentPanel.Controls.Remove(page);
RefreshButtons();
ResizeVerticalTabs(verticalTabs.Items.Count);
}
private bool DeleteSite(PVS_site site, string siteName)
{
// We cannot delete the site if there are running proxies
if (site != null)
{
var pvsProxies = connection.Cache.PVS_proxies.Where(s => s.site.opaque_ref == site.opaque_ref).ToList();
if (pvsProxies.Count > 0)
{
using (var dlg = new WarningDialog(Messages.PVS_SITE_CANNOT_BE_REMOVED))
dlg.ShowDialog(Parent);
return false;
}
}
// show confirmation dialog
var message = site != null && !string.IsNullOrEmpty(site.PVS_uuid)
? string.Format(Messages.CONFIRM_DELETE_PVS_SITE_IN_USE, siteName)
: string.Format(Messages.CONFIRM_DELETE_PVS_SITE, siteName);
DialogResult dialogResult;
using (var dlg = new WarningDialog(message, ThreeButtonDialog.ButtonOK, ThreeButtonDialog.ButtonCancel))
{
dialogResult = dlg.ShowDialog(Parent);
}
if (dialogResult != DialogResult.OK)
return false;
// if it is a newly added site, then there's noting we need to do here (it does not exist on the server yet)
if (site == null)
return true;
// delete existing site
var action = new DeletePvsSiteAction(site);
new ActionProgressDialog(action, ProgressBarStyle.Blocks).ShowDialog(this);
return action.Succeeded;
}
private void ResizeVerticalTabs(int itemCount)
{
int maxHeight = splitContainer.Panel1.Height - AddButton.Height;
verticalTabs.Height = Math.Min(maxHeight, itemCount * verticalTabs.ItemHeight);
AddButton.Top = verticalTabs.Top + verticalTabs.Height;
}
private void SomethingChangedOnPage(object sender, EventArgs e)
{
RefreshButtons();
}
private void DeleteButtonClickedOnPage(object sender, EventArgs e)
{
var page = sender as PvsCacheConfigurationPage;
if (page != null)
{
DeletePage(page);
}
}
void RefreshButtons()
{
okButton.Enabled = AllPagesValid();
addSiteButton.Visible = verticalTabs.Items.Count == 0;
}
private bool AllPagesValid()
{
return verticalTabs.Items.Cast<PvsCacheConfigurationPage>().All(page => page.ValidToSave);
}
private void splitContainer_Panel1_Resize(object sender, EventArgs e)
{
ResizeVerticalTabs(verticalTabs.Items.Count);
}
private void verticalTabs_DrawItem(object sender, DrawItemEventArgs e)
{
if (e.Index < 0 || e.Index >= verticalTabs.Items.Count)
return;
PvsCacheConfigurationPage page = verticalTabs.Items[e.Index] as PvsCacheConfigurationPage;
if (page == null)
return;
Graphics g = e.Graphics;
Rectangle b = e.Bounds;
// draw Delete icon
Image deleteIcon = Images.StaticImages._000_Abort_h32bit_16;
if (deleteIcon != null)
{
page.DeleteIconBounds = new Rectangle(b.Right - deleteIcon.Width - ((32 - deleteIcon.Width) / 2),
b.Y + ((32 - deleteIcon.Height) / 2), deleteIcon.Width, deleteIcon.Height);
g.DrawImage(deleteIcon, page.DeleteIconBounds);
}
}
private bool MouseIsOnDeleteIcon(Point mouseLocation)
{
int pageIndex = verticalTabs.IndexFromPoint(mouseLocation);
if (pageIndex < 0)
return false;
PvsCacheConfigurationPage page = verticalTabs.Items[pageIndex] as PvsCacheConfigurationPage;
if (page == null)
return false;
var bounds = page.DeleteIconBounds;
return bounds.Contains(mouseLocation);
}
private void verticalTabs_MouseMove(object sender, MouseEventArgs e)
{
if (MouseIsOnDeleteIcon(e.Location))
ShowTooltip(e.Location);
else
HideTooltip();
}
private void verticalTabs_MouseClick(object sender, MouseEventArgs e)
{
int pageIndex = verticalTabs.IndexFromPoint(e.Location);
if (pageIndex < 0 || !MouseIsOnDeleteIcon(e.Location))
return;
PvsCacheConfigurationPage page = verticalTabs.Items[pageIndex] as PvsCacheConfigurationPage;
if (page != null)
{
DeletePage(page);
HideTooltip();
}
}
private readonly ToolTip toolTipRemove = new ToolTip();
private bool tooltipVisible;
private void ShowTooltip(Point location)
{
if (!tooltipVisible)
{
toolTipRemove.Show(Messages.REMOVE, verticalTabs, location.X, location.Y + 20);
tooltipVisible = true;
Cursor = Cursors.Hand;
}
}
private void HideTooltip()
{
toolTipRemove.Hide(verticalTabs);
tooltipVisible = false;
Cursor = Cursors.Default;
}
private void AddButton_Click(object sender, EventArgs e)
{
ResizeVerticalTabs(verticalTabs.Items.Count + 1);
verticalTabs.SelectedItem = NewPage(null);
}
private void okButton_Click(object sender, EventArgs e)
{
List<AsyncAction> actions = GetActions();
if (actions.Count == 0)
return;
var objName = Helpers.GetName(connection).Ellipsise(50);
var multipleAction = new MultipleAction(
connection,
string.Format(Messages.UPDATE_PROPERTIES, objName),
Messages.UPDATING_PROPERTIES,
string.Format(Messages.UPDATED_PROPERTIES, objName),
actions, true);
multipleAction.RunAsync();
}
private List<AsyncAction> GetActions()
{
List<AsyncAction> actions = new List<AsyncAction>();
foreach (IEditPage editPage in verticalTabs.Items)
{
if (!editPage.HasChanged)
continue;
AsyncAction action = editPage.SaveSettings();
if (action != null)
actions.Add(action);
}
return actions;
}
private void PvsSiteCollectionChanged(object sender, CollectionChangeEventArgs e)
{
if (e.Action == CollectionChangeAction.Add)
{
PVS_site addedSite = e.Element as PVS_site;
Program.Invoke(this, () =>
{
ResizeVerticalTabs(verticalTabs.Items.Count + 1);
NewPage(addedSite);
});
}
}
private void PvsCacheConfigurationDialog_FormClosed(object sender, FormClosedEventArgs e)
{
this.connection.Cache.DeregisterCollectionChanged<PVS_site>(PvsSiteCollectionChanged);
}
}
}

View File

@ -1,417 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="ContentPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value>
</data>
<data name="addSiteButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="addSiteButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="addSiteButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="addSiteButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="addSiteButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="addSiteButton.Location" type="System.Drawing.Point, System.Drawing">
<value>172, 111</value>
</data>
<data name="addSiteButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 3, 0</value>
</data>
<data name="addSiteButton.Size" type="System.Drawing.Size, System.Drawing">
<value>199, 22</value>
</data>
<data name="addSiteButton.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="addSiteButton.Text" xml:space="preserve">
<value>キャッシュ構成の追加(&amp;D)</value>
</data>
<data name="addSiteButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;addSiteButton.Name" xml:space="preserve">
<value>addSiteButton</value>
</data>
<data name="&gt;&gt;addSiteButton.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;addSiteButton.Parent" xml:space="preserve">
<value>ContentPanel</value>
</data>
<data name="&gt;&gt;addSiteButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="ContentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="ContentPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="ContentPanel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 40, 6, 6</value>
</data>
<data name="ContentPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>544, 472</value>
</data>
<data name="&gt;&gt;ContentPanel.Name" xml:space="preserve">
<value>ContentPanel</value>
</data>
<data name="&gt;&gt;ContentPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ContentPanel.Parent" xml:space="preserve">
<value>blueBorder</value>
</data>
<data name="&gt;&gt;ContentPanel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="verticalTabs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="verticalTabs.Size" type="System.Drawing.Size, System.Drawing">
<value>211, 437</value>
</data>
<data name="&gt;&gt;verticalTabs.Name" xml:space="preserve">
<value>verticalTabs</value>
</data>
<data name="&gt;&gt;verticalTabs.Type" xml:space="preserve">
<value>XenAdmin.Controls.VerticalTabs, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;verticalTabs.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;verticalTabs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>700, 527</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>620, 527</value>
</data>
<data name="&gt;&gt;okButton.Name" xml:space="preserve">
<value>okButton</value>
</data>
<data name="&gt;&gt;okButton.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;okButton.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;okButton.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="splitContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 47</value>
</data>
<data name="AddButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="AddButton.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="AddButton.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>Flat</value>
</data>
<data name="AddButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="AddButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="AddButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="AddButton.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 448</value>
</data>
<data name="AddButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 3, 0</value>
</data>
<data name="AddButton.Size" type="System.Drawing.Size, System.Drawing">
<value>199, 25</value>
</data>
<data name="AddButton.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="AddButton.Text" xml:space="preserve">
<value>キャッシュ構成の追加(&amp;D)</value>
</data>
<data name="AddButton.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="AddButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;AddButton.Name" xml:space="preserve">
<value>AddButton</value>
</data>
<data name="&gt;&gt;AddButton.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;AddButton.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;AddButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Name" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="splitContainer.Panel1MinSize" type="System.Int32, mscorlib">
<value>100</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Name" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="splitContainer.Panel2MinSize" type="System.Int32, mscorlib">
<value>400</value>
</data>
<data name="splitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>763, 474</value>
</data>
<data name="splitContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>213</value>
</data>
<data name="&gt;&gt;splitContainer.Name" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;splitContainer.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="blueBorder.Size" type="System.Drawing.Size, System.Drawing">
<value>544, 472</value>
</data>
<data name="&gt;&gt;blueBorder.Name" xml:space="preserve">
<value>blueBorder</value>
</data>
<data name="&gt;&gt;blueBorder.Type" xml:space="preserve">
<value>XenAdmin.Controls.BlueBorderPanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;blueBorder.Parent" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;blueBorder.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BlurbLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="BlurbLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="BlurbLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BlurbLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 9</value>
</data>
<data name="BlurbLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>758, 35</value>
</data>
<data name="BlurbLabel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="BlurbLabel.Text" xml:space="preserve">
<value>各サイトおよびサーバーごとに割り当てるメモリまたはストレージ リポジトリと容量を選択して、PVS アクセラレータが使用するキャッシュ構成を指定します。</value>
</data>
<data name="&gt;&gt;BlurbLabel.Name" xml:space="preserve">
<value>BlurbLabel</value>
</data>
<data name="&gt;&gt;BlurbLabel.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;BlurbLabel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BlurbLabel.ZOrder" xml:space="preserve">
<value>0</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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>784, 562</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>800, 600</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>PVS アクセラレータ構成</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsCacheConfigurationDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.VerticallyTabbedDialog, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,417 +0,0 @@
<?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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ContentPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value>
</data>
<data name="addSiteButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="addSiteButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="addSiteButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="addSiteButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="addSiteButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="addSiteButton.Location" type="System.Drawing.Point, System.Drawing">
<value>184, 111</value>
</data>
<data name="addSiteButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 3, 0</value>
</data>
<data name="addSiteButton.Size" type="System.Drawing.Size, System.Drawing">
<value>176, 25</value>
</data>
<data name="addSiteButton.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="addSiteButton.Text" xml:space="preserve">
<value>A&amp;dd cache configuration</value>
</data>
<data name="addSiteButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;addSiteButton.Name" xml:space="preserve">
<value>addSiteButton</value>
</data>
<data name="&gt;&gt;addSiteButton.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;addSiteButton.Parent" xml:space="preserve">
<value>ContentPanel</value>
</data>
<data name="&gt;&gt;addSiteButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="ContentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="ContentPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="ContentPanel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 40, 6, 6</value>
</data>
<data name="ContentPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>544, 472</value>
</data>
<data name="&gt;&gt;ContentPanel.Name" xml:space="preserve">
<value>ContentPanel</value>
</data>
<data name="&gt;&gt;ContentPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ContentPanel.Parent" xml:space="preserve">
<value>blueBorder</value>
</data>
<data name="&gt;&gt;ContentPanel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="verticalTabs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="verticalTabs.Size" type="System.Drawing.Size, System.Drawing">
<value>211, 437</value>
</data>
<data name="&gt;&gt;verticalTabs.Name" xml:space="preserve">
<value>verticalTabs</value>
</data>
<data name="&gt;&gt;verticalTabs.Type" xml:space="preserve">
<value>XenAdmin.Controls.VerticalTabs, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;verticalTabs.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;verticalTabs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>700, 527</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>620, 527</value>
</data>
<data name="&gt;&gt;okButton.Name" xml:space="preserve">
<value>okButton</value>
</data>
<data name="&gt;&gt;okButton.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;okButton.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;okButton.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="splitContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 47</value>
</data>
<data name="AddButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="AddButton.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="AddButton.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>Flat</value>
</data>
<data name="AddButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="AddButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="AddButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="AddButton.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 448</value>
</data>
<data name="AddButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 3, 0</value>
</data>
<data name="AddButton.Size" type="System.Drawing.Size, System.Drawing">
<value>172, 25</value>
</data>
<data name="AddButton.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="AddButton.Text" xml:space="preserve">
<value>A&amp;dd cache configuration</value>
</data>
<data name="AddButton.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="AddButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;AddButton.Name" xml:space="preserve">
<value>AddButton</value>
</data>
<data name="&gt;&gt;AddButton.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;AddButton.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;AddButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Name" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="splitContainer.Panel1MinSize" type="System.Int32, mscorlib">
<value>100</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Name" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="splitContainer.Panel2MinSize" type="System.Int32, mscorlib">
<value>400</value>
</data>
<data name="splitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>763, 474</value>
</data>
<data name="splitContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>213</value>
</data>
<data name="&gt;&gt;splitContainer.Name" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;splitContainer.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="blueBorder.Size" type="System.Drawing.Size, System.Drawing">
<value>544, 472</value>
</data>
<data name="&gt;&gt;blueBorder.Name" xml:space="preserve">
<value>blueBorder</value>
</data>
<data name="&gt;&gt;blueBorder.Type" xml:space="preserve">
<value>XenAdmin.Controls.BlueBorderPanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;blueBorder.Parent" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;blueBorder.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BlurbLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="BlurbLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="BlurbLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BlurbLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 9</value>
</data>
<data name="BlurbLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>758, 35</value>
</data>
<data name="BlurbLabel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="BlurbLabel.Text" xml:space="preserve">
<value>Specify the cache configuration to be used for PVS-Accelerator by choosing either memory or a storage repository and the amount of space to be allocated for each site and each server.</value>
</data>
<data name="&gt;&gt;BlurbLabel.Name" xml:space="preserve">
<value>BlurbLabel</value>
</data>
<data name="&gt;&gt;BlurbLabel.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;BlurbLabel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BlurbLabel.ZOrder" xml:space="preserve">
<value>0</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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>784, 562</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>800, 600</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>PVS-Accelerator configuration</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsCacheConfigurationDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.VerticallyTabbedDialog, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,417 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="ContentPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left</value>
</data>
<data name="addSiteButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="addSiteButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="addSiteButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="addSiteButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="addSiteButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="addSiteButton.Location" type="System.Drawing.Point, System.Drawing">
<value>172, 111</value>
</data>
<data name="addSiteButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 3, 0</value>
</data>
<data name="addSiteButton.Size" type="System.Drawing.Size, System.Drawing">
<value>199, 20</value>
</data>
<data name="addSiteButton.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="addSiteButton.Text" xml:space="preserve">
<value>添加缓存配置(&amp;D)</value>
</data>
<data name="addSiteButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;addSiteButton.Name" xml:space="preserve">
<value>addSiteButton</value>
</data>
<data name="&gt;&gt;addSiteButton.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;addSiteButton.Parent" xml:space="preserve">
<value>ContentPanel</value>
</data>
<data name="&gt;&gt;addSiteButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="ContentPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="ContentPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="ContentPanel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 40, 6, 6</value>
</data>
<data name="ContentPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>544, 472</value>
</data>
<data name="&gt;&gt;ContentPanel.Name" xml:space="preserve">
<value>ContentPanel</value>
</data>
<data name="&gt;&gt;ContentPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ContentPanel.Parent" xml:space="preserve">
<value>blueBorder</value>
</data>
<data name="&gt;&gt;ContentPanel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="verticalTabs.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="verticalTabs.Size" type="System.Drawing.Size, System.Drawing">
<value>211, 437</value>
</data>
<data name="&gt;&gt;verticalTabs.Name" xml:space="preserve">
<value>verticalTabs</value>
</data>
<data name="&gt;&gt;verticalTabs.Type" xml:space="preserve">
<value>XenAdmin.Controls.VerticalTabs, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;verticalTabs.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;verticalTabs.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="cancelButton.Location" type="System.Drawing.Point, System.Drawing">
<value>700, 527</value>
</data>
<data name="&gt;&gt;cancelButton.Name" xml:space="preserve">
<value>cancelButton</value>
</data>
<data name="&gt;&gt;cancelButton.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;cancelButton.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;cancelButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="okButton.Location" type="System.Drawing.Point, System.Drawing">
<value>620, 527</value>
</data>
<data name="&gt;&gt;okButton.Name" xml:space="preserve">
<value>okButton</value>
</data>
<data name="&gt;&gt;okButton.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;okButton.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;okButton.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="splitContainer.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 47</value>
</data>
<data name="AddButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="AddButton.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="AddButton.FlatStyle" type="System.Windows.Forms.FlatStyle, System.Windows.Forms">
<value>Flat</value>
</data>
<data name="AddButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="AddButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="AddButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="AddButton.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 448</value>
</data>
<data name="AddButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 3, 0</value>
</data>
<data name="AddButton.Size" type="System.Drawing.Size, System.Drawing">
<value>199, 25</value>
</data>
<data name="AddButton.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="AddButton.Text" xml:space="preserve">
<value>添加缓存配置(&amp;D)</value>
</data>
<data name="AddButton.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="AddButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;AddButton.Name" xml:space="preserve">
<value>AddButton</value>
</data>
<data name="&gt;&gt;AddButton.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;AddButton.Parent" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;AddButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Name" xml:space="preserve">
<value>splitContainer.Panel1</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="splitContainer.Panel1MinSize" type="System.Int32, mscorlib">
<value>100</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Name" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.Parent" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Panel2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="splitContainer.Panel2MinSize" type="System.Int32, mscorlib">
<value>400</value>
</data>
<data name="splitContainer.Size" type="System.Drawing.Size, System.Drawing">
<value>763, 474</value>
</data>
<data name="splitContainer.SplitterDistance" type="System.Int32, mscorlib">
<value>213</value>
</data>
<data name="&gt;&gt;splitContainer.Name" xml:space="preserve">
<value>splitContainer</value>
</data>
<data name="&gt;&gt;splitContainer.Type" xml:space="preserve">
<value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;splitContainer.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;splitContainer.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="blueBorder.Size" type="System.Drawing.Size, System.Drawing">
<value>544, 472</value>
</data>
<data name="&gt;&gt;blueBorder.Name" xml:space="preserve">
<value>blueBorder</value>
</data>
<data name="&gt;&gt;blueBorder.Type" xml:space="preserve">
<value>XenAdmin.Controls.BlueBorderPanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;blueBorder.Parent" xml:space="preserve">
<value>splitContainer.Panel2</value>
</data>
<data name="&gt;&gt;blueBorder.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="BlurbLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="BlurbLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="BlurbLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="BlurbLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 9</value>
</data>
<data name="BlurbLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>758, 35</value>
</data>
<data name="BlurbLabel.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="BlurbLabel.Text" xml:space="preserve">
<value>通过选择内存或存储库以及要为每个站点和每个服务器分配的空间量来指定要用于 PVS 加速器的缓存配置。</value>
</data>
<data name="&gt;&gt;BlurbLabel.Name" xml:space="preserve">
<value>BlurbLabel</value>
</data>
<data name="&gt;&gt;BlurbLabel.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;BlurbLabel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;BlurbLabel.ZOrder" xml:space="preserve">
<value>0</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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>784, 562</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>800, 600</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>PVS 加速器配置</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsCacheConfigurationDialog</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.Dialogs.VerticallyTabbedDialog, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,181 +0,0 @@
namespace XenAdmin.Dialogs
{
partial class PvsCacheConfigurationPage
{
/// <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(PvsCacheConfigurationPage));
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.cacheStorageInUseInfoLabel = new System.Windows.Forms.Label();
this.memoryOnlyInfoLabel = new System.Windows.Forms.Label();
this.deleteButton = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.hostsPanel = new XenAdmin.Controls.FlickerFreePanel();
this.viewPvsServersButton = new System.Windows.Forms.Button();
this.pvsConfigInfoIcon = new System.Windows.Forms.PictureBox();
this.pvsConfigInfoLabel = new System.Windows.Forms.Label();
this.memoryOnlyInfoIcon = new System.Windows.Forms.PictureBox();
this.cacheStorageInUseInfoIcon = new System.Windows.Forms.PictureBox();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pvsConfigInfoIcon)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.memoryOnlyInfoIcon)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.cacheStorageInUseInfoIcon)).BeginInit();
this.SuspendLayout();
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.cacheStorageInUseInfoLabel, 1, 3);
this.tableLayoutPanel1.Controls.Add(this.memoryOnlyInfoLabel, 1, 4);
this.tableLayoutPanel1.Controls.Add(this.deleteButton, 4, 6);
this.tableLayoutPanel1.Controls.Add(this.label1, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.label7, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.textBox1, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.hostsPanel, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.viewPvsServersButton, 2, 6);
this.tableLayoutPanel1.Controls.Add(this.pvsConfigInfoIcon, 0, 5);
this.tableLayoutPanel1.Controls.Add(this.pvsConfigInfoLabel, 1, 5);
this.tableLayoutPanel1.Controls.Add(this.memoryOnlyInfoIcon, 0, 4);
this.tableLayoutPanel1.Controls.Add(this.cacheStorageInUseInfoIcon, 0, 3);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// cacheStorageInUseInfoLabel
//
resources.ApplyResources(this.cacheStorageInUseInfoLabel, "cacheStorageInUseInfoLabel");
this.tableLayoutPanel1.SetColumnSpan(this.cacheStorageInUseInfoLabel, 3);
this.cacheStorageInUseInfoLabel.Name = "cacheStorageInUseInfoLabel";
//
// memoryOnlyInfoLabel
//
resources.ApplyResources(this.memoryOnlyInfoLabel, "memoryOnlyInfoLabel");
this.tableLayoutPanel1.SetColumnSpan(this.memoryOnlyInfoLabel, 3);
this.memoryOnlyInfoLabel.Name = "memoryOnlyInfoLabel";
//
// deleteButton
//
resources.ApplyResources(this.deleteButton, "deleteButton");
this.deleteButton.Image = global::XenAdmin.Properties.Resources._000_RemoveSite_h32bit_16;
this.deleteButton.Name = "deleteButton";
this.deleteButton.UseVisualStyleBackColor = true;
this.deleteButton.Click += new System.EventHandler(this.deleteButton_Click);
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.tableLayoutPanel1.SetColumnSpan(this.label1, 4);
this.label1.Name = "label1";
//
// label7
//
resources.ApplyResources(this.label7, "label7");
this.tableLayoutPanel1.SetColumnSpan(this.label7, 2);
this.label7.Name = "label7";
//
// textBox1
//
this.tableLayoutPanel1.SetColumnSpan(this.textBox1, 2);
resources.ApplyResources(this.textBox1, "textBox1");
this.textBox1.Name = "textBox1";
this.textBox1.TextChanged += new System.EventHandler(this.SomethingChanged);
//
// hostsPanel
//
resources.ApplyResources(this.hostsPanel, "hostsPanel");
this.hostsPanel.BorderColor = System.Drawing.Color.Black;
this.hostsPanel.BorderWidth = 1;
this.tableLayoutPanel1.SetColumnSpan(this.hostsPanel, 4);
this.hostsPanel.Name = "hostsPanel";
//
// viewPvsServersButton
//
resources.ApplyResources(this.viewPvsServersButton, "viewPvsServersButton");
this.viewPvsServersButton.Name = "viewPvsServersButton";
this.viewPvsServersButton.UseVisualStyleBackColor = true;
this.viewPvsServersButton.Click += new System.EventHandler(this.viewServersButton_Click);
//
// pvsConfigInfoIcon
//
resources.ApplyResources(this.pvsConfigInfoIcon, "pvsConfigInfoIcon");
this.pvsConfigInfoIcon.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
this.pvsConfigInfoIcon.Name = "pvsConfigInfoIcon";
this.pvsConfigInfoIcon.TabStop = false;
//
// pvsConfigInfoLabel
//
resources.ApplyResources(this.pvsConfigInfoLabel, "pvsConfigInfoLabel");
this.tableLayoutPanel1.SetColumnSpan(this.pvsConfigInfoLabel, 3);
this.pvsConfigInfoLabel.Name = "pvsConfigInfoLabel";
//
// memoryOnlyInfoIcon
//
resources.ApplyResources(this.memoryOnlyInfoIcon, "memoryOnlyInfoIcon");
this.memoryOnlyInfoIcon.Image = global::XenAdmin.Properties.Resources._000_Info3_h32bit_16;
this.memoryOnlyInfoIcon.Name = "memoryOnlyInfoIcon";
this.memoryOnlyInfoIcon.TabStop = false;
//
// cacheStorageInUseInfoIcon
//
resources.ApplyResources(this.cacheStorageInUseInfoIcon, "cacheStorageInUseInfoIcon");
this.cacheStorageInUseInfoIcon.Image = global::XenAdmin.Properties.Resources._000_Alert2_h32bit_16;
this.cacheStorageInUseInfoIcon.Name = "cacheStorageInUseInfoIcon";
this.cacheStorageInUseInfoIcon.TabStop = false;
//
// PvsCacheConfigurationPage
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.tableLayoutPanel1);
this.DoubleBuffered = true;
this.Name = "PvsCacheConfigurationPage";
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pvsConfigInfoIcon)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.memoryOnlyInfoIcon)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.cacheStorageInUseInfoIcon)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox textBox1;
private Controls.FlickerFreePanel hostsPanel;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button deleteButton;
private System.Windows.Forms.Button viewPvsServersButton;
private System.Windows.Forms.Label pvsConfigInfoLabel;
private System.Windows.Forms.PictureBox pvsConfigInfoIcon;
private System.Windows.Forms.Label memoryOnlyInfoLabel;
private System.Windows.Forms.PictureBox memoryOnlyInfoIcon;
private System.Windows.Forms.Label cacheStorageInUseInfoLabel;
private System.Windows.Forms.PictureBox cacheStorageInUseInfoIcon;
}
}

View File

@ -1,210 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Drawing;
using System.Linq;
using System.Windows.Forms;
using XenAdmin.Actions;
using XenAdmin.Controls;
using XenAdmin.Core;
using XenAdmin.Network;
using XenAdmin.SettingsPanels;
using XenAPI;
namespace XenAdmin.Dialogs
{
public partial class PvsCacheConfigurationPage : UserControl, IEditPage
{
protected internal PVS_site PvsSite;
protected internal Rectangle DeleteIconBounds;
private IXenConnection connection;
private List<string> knownSiteNames;
private List<PvsCacheStorageRow> rows = new List<PvsCacheStorageRow>();
public event EventHandler Changed;
public event EventHandler DeleteButtonClicked;
public PvsCacheConfigurationPage(IXenConnection connection, List<string> knownSiteNames)
{
this.connection = connection;
this.knownSiteNames = knownSiteNames;
InitializeComponent();
}
public Image Image
{
get { return Images.GetImage16For(Icons.PvsSite); }
}
public void SetXenObjects(IXenObject orig, IXenObject clone)
{
PvsSite = (PVS_site) clone;
if (PvsSite != null)
{
textBox1.Text = PvsSite.Name();
pvsConfigInfoIcon.Visible = pvsConfigInfoLabel.Visible = string.IsNullOrEmpty(PvsSite.PVS_uuid);
}
else
{
// Generate list of all taken PVS_site names
List<string> takenNames = new List<PVS_site>(connection.Cache.PVS_sites).ConvertAll(s => s.Name());
takenNames.AddRange(knownSiteNames);
// Generate a unique suggested name for the new site
textBox1.Text = Helpers.MakeUniqueName(Messages.PVS_SITE_NAME, takenNames);
}
LoadServers();
viewPvsServersButton.Enabled = PvsSite != null && PvsSite.servers.Count > 0;
cacheStorageInUseInfoIcon.Visible = cacheStorageInUseInfoLabel.Visible = rows.Any(row => row.ReadOnly);
memoryOnlyInfoIcon.Visible = memoryOnlyInfoLabel.Visible = rows.Any(row => !row.ReadOnly);
}
public bool ValidToSave
{
get { return !string.IsNullOrEmpty(textBox1.Text.Trim()) && rows.All(r => r.ValidToSave); }
}
public sealed override string Text
{
get { return textBox1.Text; }
set { base.Text = value; }
}
public String SubText
{
get
{
var configuredRows = rows.Where(r => r.CacheSr != null).ToList();
if (configuredRows.Count == 0)
return Messages.NOT_CONFIGURED;
return configuredRows.Any(row => row.CacheSr.GetSRType(false) != SR.SRTypes.tmpfs)
? Messages.PVS_CACHE_MEMORY_AND_DISK
: Messages.PVS_CACHE_MEMORY_ONLY;
}
}
private void LoadServers()
{
hostsPanel.SuspendLayout();
hostsPanel.Controls.Clear();
var hosts = connection.Cache.Hosts.ToList();
hosts.Sort();
// start from the last element in the list, because when each control is docked to top in this order
for (var index = hosts.Count - 1; index >= 0; index--)
{
var host = hosts[index];
var row = new PvsCacheStorageRow(host, PvsSite)
{
ShowHeader = index == 0,
Dock = DockStyle.Top,
TabIndex = index
};
row.Changed += SomethingChanged;
rows.Add(row);
hostsPanel.Controls.Add(row);
}
hostsPanel.ResumeLayout();
hostsPanel.Refresh();
}
public AsyncAction SaveSettings()
{
if (!ValidToSave)
return null;
var newPvsCacheStorages = new List<PVS_cache_storage>();
foreach (var row in rows.Where(r => r.HasChanged))
{
var pvsCacheStorage = new PVS_cache_storage
{
host = new XenRef<Host>(row.Host),
size = row.CacheSize
};
if (PvsSite != null)
pvsCacheStorage.site = new XenRef<PVS_site>(PvsSite);
if (row.CacheSr != null)
pvsCacheStorage.SR = new XenRef<SR>(row.CacheSr);
newPvsCacheStorages.Add(pvsCacheStorage);
}
if (newPvsCacheStorages.Count > 0 || NameHasChanged)
return new ConfigurePvsSiteAction(connection, textBox1.Text, PvsSite, newPvsCacheStorages);
return null;
}
public void ShowLocalValidationMessages()
{ }
public void HideLocalValidationMessages()
{ }
public void Cleanup()
{ }
public bool HasChanged
{
get { return NameHasChanged || rows.Any(r => r.HasChanged); }
}
private bool NameHasChanged
{
get { return PvsSite == null || textBox1.Text != PvsSite.Name(); }
}
private void SomethingChanged(object sender, EventArgs e)
{
if (Changed != null)
Changed(this, e);
}
private void deleteButton_Click(object sender, EventArgs e)
{
if (DeleteButtonClicked != null)
DeleteButtonClicked(this, e);
}
private void viewServersButton_Click(object sender, EventArgs e)
{
if (PvsSite == null)
return;
using (var dialog = new PvsSiteDialog(PvsSite))
dialog.ShowDialog(this);
}
}
}

View File

@ -1,595 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="cacheStorageInUseInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="cacheStorageInUseInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="cacheStorageInUseInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cacheStorageInUseInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 219</value>
</data>
<data name="cacheStorageInUseInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="cacheStorageInUseInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>357, 15</value>
</data>
<data name="cacheStorageInUseInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="cacheStorageInUseInfoLabel.Text" xml:space="preserve">
<value>キャッシュ ストレージはサーバーで使用中のため変更できません。</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.Name" xml:space="preserve">
<value>cacheStorageInUseInfoLabel</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.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;cacheStorageInUseInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="memoryOnlyInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="memoryOnlyInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="memoryOnlyInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="memoryOnlyInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 241</value>
</data>
<data name="memoryOnlyInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="memoryOnlyInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>393, 45</value>
</data>
<data name="memoryOnlyInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="memoryOnlyInfoLabel.Text" xml:space="preserve">
<value>推奨するキャッシュ サイズは vDisk バージョンごとに最低 5GB です。
[メモリのみ] を選択する場合、許容キャッシュ サイズはサーバーのコントロール ドメイン メモリによって違います。</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.Name" xml:space="preserve">
<value>memoryOnlyInfoLabel</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.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;memoryOnlyInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="deleteButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="deleteButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="deleteButton.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="deleteButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="deleteButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="deleteButton.Location" type="System.Drawing.Point, System.Drawing">
<value>231, 330</value>
</data>
<data name="deleteButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
<data name="deleteButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 5, 0</value>
</data>
<data name="deleteButton.Size" type="System.Drawing.Size, System.Drawing">
<value>206, 23</value>
</data>
<data name="deleteButton.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="deleteButton.Text" xml:space="preserve">
<value>キャッシュ構成の削除(&amp;R)</value>
</data>
<data name="deleteButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;deleteButton.Name" xml:space="preserve">
<value>deleteButton</value>
</data>
<data name="&gt;&gt;deleteButton.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;deleteButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;deleteButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 36</value>
</data>
<data name="label1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 10</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 33</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>キャッシュ構成:</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.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;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label7.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label7.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="label7.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 6, 0</value>
</data>
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 26</value>
</data>
<data name="label7.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>サイト名(&amp;S):</value>
</data>
<data name="label7.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;label7.Name" xml:space="preserve">
<value>label7</value>
</data>
<data name="&gt;&gt;label7.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;label7.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label7.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>69, 13</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 20</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
</data>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="hostsPanel.AutoScroll" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="hostsPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="hostsPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 72</value>
</data>
<data name="hostsPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 141</value>
</data>
<data name="hostsPanel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;hostsPanel.Name" xml:space="preserve">
<value>hostsPanel</value>
</data>
<data name="&gt;&gt;hostsPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.FlickerFreePanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;hostsPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;hostsPanel.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="viewPvsServersButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="viewPvsServersButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="viewPvsServersButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="viewPvsServersButton.Location" type="System.Drawing.Point, System.Drawing">
<value>103, 330</value>
</data>
<data name="viewPvsServersButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
<data name="viewPvsServersButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 5, 0</value>
</data>
<data name="viewPvsServersButton.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 23</value>
</data>
<data name="viewPvsServersButton.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="viewPvsServersButton.Text" xml:space="preserve">
<value>PVS サーバーの表示(&amp;V)...</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.Name" xml:space="preserve">
<value>viewPvsServersButton</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.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;viewPvsServersButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="pvsConfigInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="pvsConfigInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pvsConfigInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 292</value>
</data>
<data name="pvsConfigInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="pvsConfigInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 30</value>
</data>
<data name="pvsConfigInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="pvsConfigInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.Name" xml:space="preserve">
<value>pvsConfigInfoIcon</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.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;pvsConfigInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="pvsConfigInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pvsConfigInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pvsConfigInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pvsConfigInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 292</value>
</data>
<data name="pvsConfigInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="pvsConfigInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>381, 30</value>
</data>
<data name="pvsConfigInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="pvsConfigInfoLabel.Text" xml:space="preserve">
<value>このサイトのPVS アクセラレータ構成は、PVS コンソールまたは MCLI を使用して完了する必要があります。</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.Name" xml:space="preserve">
<value>pvsConfigInfoLabel</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.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;pvsConfigInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="memoryOnlyInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="memoryOnlyInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="memoryOnlyInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 243</value>
</data>
<data name="memoryOnlyInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 0, 3</value>
</data>
<data name="memoryOnlyInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 43</value>
</data>
<data name="memoryOnlyInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="memoryOnlyInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.Name" xml:space="preserve">
<value>memoryOnlyInfoIcon</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.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;memoryOnlyInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="cacheStorageInUseInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="cacheStorageInUseInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cacheStorageInUseInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 219</value>
</data>
<data name="cacheStorageInUseInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="cacheStorageInUseInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="cacheStorageInUseInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="cacheStorageInUseInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.Name" xml:space="preserve">
<value>cacheStorageInUseInfoIcon</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.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;cacheStorageInUseInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>440, 356</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="cacheStorageInUseInfoLabel" Row="3" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="memoryOnlyInfoLabel" Row="4" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="deleteButton" Row="6" RowSpan="1" Column="4" ColumnSpan="1" />&lt;Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="4" />&lt;Control Name="label7" Row="0" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="textBox1" Row="0" RowSpan="1" Column="2" ColumnSpan="2" />&lt;Control Name="hostsPanel" Row="2" RowSpan="1" Column="0" ColumnSpan="4" />&lt;Control Name="viewPvsServersButton" Row="6" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="pvsConfigInfoIcon" Row="5" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="pvsConfigInfoLabel" Row="5" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="memoryOnlyInfoIcon" Row="4" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="cacheStorageInUseInfoIcon" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" />&lt;Rows Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,21,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></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.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>440, 356</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsCacheConfigurationPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,595 +0,0 @@
<?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="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="cacheStorageInUseInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="cacheStorageInUseInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="cacheStorageInUseInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cacheStorageInUseInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 219</value>
</data>
<data name="cacheStorageInUseInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="cacheStorageInUseInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>357, 15</value>
</data>
<data name="cacheStorageInUseInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="cacheStorageInUseInfoLabel.Text" xml:space="preserve">
<value>The cache storage cannot be changed on servers where it is in use.</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.Name" xml:space="preserve">
<value>cacheStorageInUseInfoLabel</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.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;cacheStorageInUseInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="memoryOnlyInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="memoryOnlyInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="memoryOnlyInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="memoryOnlyInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 241</value>
</data>
<data name="memoryOnlyInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="memoryOnlyInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>393, 45</value>
</data>
<data name="memoryOnlyInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="memoryOnlyInfoLabel.Text" xml:space="preserve">
<value>The cache size recommendation is at least 5GB per vDisk version.
If Memory only is chosen, the allowed cache size depends on the server's Control Domain memory.</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.Name" xml:space="preserve">
<value>memoryOnlyInfoLabel</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.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;memoryOnlyInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="deleteButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="deleteButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="deleteButton.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="deleteButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="deleteButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="deleteButton.Location" type="System.Drawing.Point, System.Drawing">
<value>255, 330</value>
</data>
<data name="deleteButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
<data name="deleteButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 5, 0</value>
</data>
<data name="deleteButton.Size" type="System.Drawing.Size, System.Drawing">
<value>182, 23</value>
</data>
<data name="deleteButton.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="deleteButton.Text" xml:space="preserve">
<value>&amp;Remove Cache Configuration</value>
</data>
<data name="deleteButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;deleteButton.Name" xml:space="preserve">
<value>deleteButton</value>
</data>
<data name="&gt;&gt;deleteButton.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;deleteButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;deleteButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 36</value>
</data>
<data name="label1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 10</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 33</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Cache configuration:</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.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;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label7.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label7.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="label7.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 6, 0</value>
</data>
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 26</value>
</data>
<data name="label7.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>&amp;Site name:</value>
</data>
<data name="label7.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;label7.Name" xml:space="preserve">
<value>label7</value>
</data>
<data name="&gt;&gt;label7.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;label7.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label7.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>69, 13</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 20</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
</data>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="hostsPanel.AutoScroll" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="hostsPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="hostsPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 72</value>
</data>
<data name="hostsPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 141</value>
</data>
<data name="hostsPanel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;hostsPanel.Name" xml:space="preserve">
<value>hostsPanel</value>
</data>
<data name="&gt;&gt;hostsPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.FlickerFreePanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;hostsPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;hostsPanel.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="viewPvsServersButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="viewPvsServersButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="viewPvsServersButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="viewPvsServersButton.Location" type="System.Drawing.Point, System.Drawing">
<value>127, 330</value>
</data>
<data name="viewPvsServersButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
<data name="viewPvsServersButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 5, 0</value>
</data>
<data name="viewPvsServersButton.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 23</value>
</data>
<data name="viewPvsServersButton.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="viewPvsServersButton.Text" xml:space="preserve">
<value>&amp;View PVS Servers...</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.Name" xml:space="preserve">
<value>viewPvsServersButton</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.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;viewPvsServersButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="pvsConfigInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="pvsConfigInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pvsConfigInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 292</value>
</data>
<data name="pvsConfigInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="pvsConfigInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 30</value>
</data>
<data name="pvsConfigInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="pvsConfigInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.Name" xml:space="preserve">
<value>pvsConfigInfoIcon</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.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;pvsConfigInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="pvsConfigInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pvsConfigInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pvsConfigInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pvsConfigInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 292</value>
</data>
<data name="pvsConfigInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="pvsConfigInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>412, 30</value>
</data>
<data name="pvsConfigInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="pvsConfigInfoLabel.Text" xml:space="preserve">
<value>The PVS-Accelerator configuration for this site must be completed using the PVS console or MCLI.</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.Name" xml:space="preserve">
<value>pvsConfigInfoLabel</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.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;pvsConfigInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="memoryOnlyInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="memoryOnlyInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="memoryOnlyInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 243</value>
</data>
<data name="memoryOnlyInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 0, 3</value>
</data>
<data name="memoryOnlyInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 43</value>
</data>
<data name="memoryOnlyInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="memoryOnlyInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.Name" xml:space="preserve">
<value>memoryOnlyInfoIcon</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.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;memoryOnlyInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="cacheStorageInUseInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="cacheStorageInUseInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cacheStorageInUseInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 219</value>
</data>
<data name="cacheStorageInUseInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="cacheStorageInUseInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="cacheStorageInUseInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="cacheStorageInUseInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.Name" xml:space="preserve">
<value>cacheStorageInUseInfoIcon</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.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;cacheStorageInUseInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>440, 356</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</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="cacheStorageInUseInfoLabel" Row="3" RowSpan="1" Column="1" ColumnSpan="3" /&gt;&lt;Control Name="memoryOnlyInfoLabel" Row="4" RowSpan="1" Column="1" ColumnSpan="3" /&gt;&lt;Control Name="deleteButton" Row="6" RowSpan="1" Column="4" ColumnSpan="1" /&gt;&lt;Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;Control Name="label7" Row="0" RowSpan="1" Column="0" ColumnSpan="2" /&gt;&lt;Control Name="textBox1" Row="0" RowSpan="1" Column="2" ColumnSpan="2" /&gt;&lt;Control Name="hostsPanel" Row="2" RowSpan="1" Column="0" ColumnSpan="4" /&gt;&lt;Control Name="viewPvsServersButton" Row="6" RowSpan="1" Column="2" ColumnSpan="1" /&gt;&lt;Control Name="pvsConfigInfoIcon" Row="5" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="pvsConfigInfoLabel" Row="5" RowSpan="1" Column="1" ColumnSpan="3" /&gt;&lt;Control Name="memoryOnlyInfoIcon" Row="4" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="cacheStorageInUseInfoIcon" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,21,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.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>440, 356</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsCacheConfigurationPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,595 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="cacheStorageInUseInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="cacheStorageInUseInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="cacheStorageInUseInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cacheStorageInUseInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 219</value>
</data>
<data name="cacheStorageInUseInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="cacheStorageInUseInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>357, 15</value>
</data>
<data name="cacheStorageInUseInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>21</value>
</data>
<data name="cacheStorageInUseInfoLabel.Text" xml:space="preserve">
<value>无法在正在使用缓存存储的服务器上更改缓存存储。</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.Name" xml:space="preserve">
<value>cacheStorageInUseInfoLabel</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.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;cacheStorageInUseInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoLabel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="memoryOnlyInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="memoryOnlyInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="memoryOnlyInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="memoryOnlyInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 241</value>
</data>
<data name="memoryOnlyInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="memoryOnlyInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>393, 45</value>
</data>
<data name="memoryOnlyInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>18</value>
</data>
<data name="memoryOnlyInfoLabel.Text" xml:space="preserve">
<value>建议的缓存大小为每个虚拟磁盘版本至少 5 GB。
如果选择“仅限内存”,允许的缓存大小将取决于服务器的控制域内存。</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.Name" xml:space="preserve">
<value>memoryOnlyInfoLabel</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.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;memoryOnlyInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoLabel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="deleteButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="deleteButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="deleteButton.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="deleteButton.ImageAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="deleteButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="deleteButton.Location" type="System.Drawing.Point, System.Drawing">
<value>231, 330</value>
</data>
<data name="deleteButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
<data name="deleteButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 5, 0</value>
</data>
<data name="deleteButton.Size" type="System.Drawing.Size, System.Drawing">
<value>206, 23</value>
</data>
<data name="deleteButton.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="deleteButton.Text" xml:space="preserve">
<value>删除缓存配置(&amp;R)</value>
</data>
<data name="deleteButton.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;deleteButton.Name" xml:space="preserve">
<value>deleteButton</value>
</data>
<data name="&gt;&gt;deleteButton.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;deleteButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;deleteButton.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 36</value>
</data>
<data name="label1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 10</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 33</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>缓存配置:</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.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;label1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="label7.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label7.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="label7.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="label7.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 10</value>
</data>
<data name="label7.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 0, 6, 0</value>
</data>
<data name="label7.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 26</value>
</data>
<data name="label7.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="label7.Text" xml:space="preserve">
<value>站点名称(&amp;S):</value>
</data>
<data name="label7.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;label7.Name" xml:space="preserve">
<value>label7</value>
</data>
<data name="&gt;&gt;label7.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;label7.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label7.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>69, 13</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>368, 20</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
</data>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="hostsPanel.AutoScroll" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="hostsPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="hostsPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 72</value>
</data>
<data name="hostsPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>434, 141</value>
</data>
<data name="hostsPanel.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;hostsPanel.Name" xml:space="preserve">
<value>hostsPanel</value>
</data>
<data name="&gt;&gt;hostsPanel.Type" xml:space="preserve">
<value>XenAdmin.Controls.FlickerFreePanel, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;hostsPanel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;hostsPanel.ZOrder" xml:space="preserve">
<value>6</value>
</data>
<data name="viewPvsServersButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Right</value>
</data>
<data name="viewPvsServersButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="viewPvsServersButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="viewPvsServersButton.Location" type="System.Drawing.Point, System.Drawing">
<value>103, 330</value>
</data>
<data name="viewPvsServersButton.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 3, 3</value>
</data>
<data name="viewPvsServersButton.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>5, 0, 5, 0</value>
</data>
<data name="viewPvsServersButton.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 23</value>
</data>
<data name="viewPvsServersButton.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="viewPvsServersButton.Text" xml:space="preserve">
<value>查看 PVS 服务器(&amp;V)...</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.Name" xml:space="preserve">
<value>viewPvsServersButton</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.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;viewPvsServersButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;viewPvsServersButton.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="pvsConfigInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="pvsConfigInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pvsConfigInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 292</value>
</data>
<data name="pvsConfigInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="pvsConfigInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 30</value>
</data>
<data name="pvsConfigInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="pvsConfigInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.Name" xml:space="preserve">
<value>pvsConfigInfoIcon</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.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;pvsConfigInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pvsConfigInfoIcon.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="pvsConfigInfoLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pvsConfigInfoLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="pvsConfigInfoLabel.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="pvsConfigInfoLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>22, 292</value>
</data>
<data name="pvsConfigInfoLabel.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 3, 3</value>
</data>
<data name="pvsConfigInfoLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>381, 30</value>
</data>
<data name="pvsConfigInfoLabel.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="pvsConfigInfoLabel.Text" xml:space="preserve">
<value>必须使用 PVS 控制台或 MCLI 完成此站点的 PVS 加速器配置。</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.Name" xml:space="preserve">
<value>pvsConfigInfoLabel</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.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;pvsConfigInfoLabel.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;pvsConfigInfoLabel.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="memoryOnlyInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="memoryOnlyInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="memoryOnlyInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 243</value>
</data>
<data name="memoryOnlyInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 5, 0, 3</value>
</data>
<data name="memoryOnlyInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 43</value>
</data>
<data name="memoryOnlyInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="memoryOnlyInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.Name" xml:space="preserve">
<value>memoryOnlyInfoIcon</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.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;memoryOnlyInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;memoryOnlyInfoIcon.ZOrder" xml:space="preserve">
<value>10</value>
</data>
<data name="cacheStorageInUseInfoIcon.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
<data name="cacheStorageInUseInfoIcon.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="cacheStorageInUseInfoIcon.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 219</value>
</data>
<data name="cacheStorageInUseInfoIcon.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="cacheStorageInUseInfoIcon.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 16</value>
</data>
<data name="cacheStorageInUseInfoIcon.SizeMode" type="System.Windows.Forms.PictureBoxSizeMode, System.Windows.Forms">
<value>AutoSize</value>
</data>
<data name="cacheStorageInUseInfoIcon.TabIndex" type="System.Int32, mscorlib">
<value>20</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.Name" xml:space="preserve">
<value>cacheStorageInUseInfoIcon</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.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;cacheStorageInUseInfoIcon.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;cacheStorageInUseInfoIcon.ZOrder" xml:space="preserve">
<value>11</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="tableLayoutPanel1.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>440, 356</value>
</data>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>1</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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="cacheStorageInUseInfoLabel" Row="3" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="memoryOnlyInfoLabel" Row="4" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="deleteButton" Row="6" RowSpan="1" Column="4" ColumnSpan="1" />&lt;Control Name="label1" Row="1" RowSpan="1" Column="0" ColumnSpan="4" />&lt;Control Name="label7" Row="0" RowSpan="1" Column="0" ColumnSpan="2" />&lt;Control Name="textBox1" Row="0" RowSpan="1" Column="2" ColumnSpan="2" />&lt;Control Name="hostsPanel" Row="2" RowSpan="1" Column="0" ColumnSpan="4" />&lt;Control Name="viewPvsServersButton" Row="6" RowSpan="1" Column="2" ColumnSpan="1" />&lt;Control Name="pvsConfigInfoIcon" Row="5" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="pvsConfigInfoLabel" Row="5" RowSpan="1" Column="1" ColumnSpan="3" />&lt;Control Name="memoryOnlyInfoIcon" Row="4" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="cacheStorageInUseInfoIcon" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0" />&lt;Rows Styles="AutoSize,0,AutoSize,0,Percent,100,AutoSize,0,AutoSize,21,AutoSize,0,AutoSize,0" />&lt;/TableLayoutSettings></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.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 3, 0, 3</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>440, 356</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsCacheConfigurationPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@ -1,127 +0,0 @@
namespace XenAdmin.Dialogs
{
partial class PvsSiteDialog
{
/// <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(PvsSiteDialog));
this.closeButton = new System.Windows.Forms.Button();
this.mainPanel = new System.Windows.Forms.Panel();
this.gridView = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx();
this.ipAddressesColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.firstPortColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.lastPortColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.bottomPanel = new System.Windows.Forms.Panel();
this.mainPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.gridView)).BeginInit();
this.bottomPanel.SuspendLayout();
this.SuspendLayout();
//
// closeButton
//
resources.ApplyResources(this.closeButton, "closeButton");
this.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.closeButton.Name = "closeButton";
this.closeButton.UseVisualStyleBackColor = true;
this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
//
// mainPanel
//
this.mainPanel.Controls.Add(this.gridView);
resources.ApplyResources(this.mainPanel, "mainPanel");
this.mainPanel.Name = "mainPanel";
//
// gridView
//
this.gridView.BackgroundColor = System.Drawing.SystemColors.Window;
this.gridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.gridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.gridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.ipAddressesColumn,
this.firstPortColumn,
this.lastPortColumn});
resources.ApplyResources(this.gridView, "gridView");
this.gridView.Name = "gridView";
this.gridView.ReadOnly = true;
//
// ipAddressesColumn
//
this.ipAddressesColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.ipAddressesColumn.FillWeight = 105.6863F;
resources.ApplyResources(this.ipAddressesColumn, "ipAddressesColumn");
this.ipAddressesColumn.Name = "ipAddressesColumn";
this.ipAddressesColumn.ReadOnly = true;
//
// firstPortColumn
//
this.firstPortColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
this.firstPortColumn.FillWeight = 173.6275F;
resources.ApplyResources(this.firstPortColumn, "firstPortColumn");
this.firstPortColumn.Name = "firstPortColumn";
this.firstPortColumn.ReadOnly = true;
//
// lastPortColumn
//
this.lastPortColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
this.lastPortColumn.FillWeight = 173.6275F;
resources.ApplyResources(this.lastPortColumn, "lastPortColumn");
this.lastPortColumn.Name = "lastPortColumn";
this.lastPortColumn.ReadOnly = true;
//
// bottomPanel
//
this.bottomPanel.Controls.Add(this.closeButton);
resources.ApplyResources(this.bottomPanel, "bottomPanel");
this.bottomPanel.Name = "bottomPanel";
//
// PvsSiteDialog
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.CancelButton = this.closeButton;
this.Controls.Add(this.mainPanel);
this.Controls.Add(this.bottomPanel);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
this.Name = "PvsSiteDialog";
this.ShowInTaskbar = true;
this.mainPanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.gridView)).EndInit();
this.bottomPanel.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button closeButton;
private System.Windows.Forms.Panel bottomPanel;
private System.Windows.Forms.Panel mainPanel;
private Controls.DataGridViewEx.DataGridViewEx gridView;
private System.Windows.Forms.DataGridViewTextBoxColumn ipAddressesColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn firstPortColumn;
private System.Windows.Forms.DataGridViewTextBoxColumn lastPortColumn;
}
}

View File

@ -1,126 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.ComponentModel;
using System.Windows.Forms;
using XenAPI;
namespace XenAdmin.Dialogs
{
public partial class PvsSiteDialog : XenDialogBase
{
private readonly PVS_site pvsSite;
/// <summary>
/// Creates a dialog for viewing the PVS servers on a particular site.
/// </summary>
/// <param name="site">May not be null.</param>
public PvsSiteDialog(PVS_site site)
: base(site?.Connection)
{
System.Diagnostics.Debug.Assert(site != null);
pvsSite = site;
InitializeComponent();
Text = string.Format(Messages.PVS_SITE_DIALOG_TITLE, pvsSite.Name().Ellipsise(50));
System.Diagnostics.Debug.Assert(gridView.Columns.Count > 0);
gridView.Columns[0].DefaultCellStyle.NullValue = null;
RegisterEventHandlers();
Rebuild();
}
private void RegisterEventHandlers()
{
UnregisterEventHandlers();
connection.Cache.RegisterBatchCollectionChanged<PVS_server>(PvsServerBatchCollectionChanged);
}
private void UnregisterEventHandlers()
{
connection.Cache.DeregisterBatchCollectionChanged<PVS_server>(PvsServerBatchCollectionChanged);
}
private void PvsServerBatchCollectionChanged(object sender, EventArgs e)
{
Program.Invoke(this, Rebuild);
}
protected override void OnClosing(CancelEventArgs e)
{
UnregisterEventHandlers();
base.OnClosing(e);
}
private void Rebuild()
{
Program.AssertOnEventThread();
try
{
gridView.SuspendLayout();
gridView.Rows.Clear();
foreach (var pvsServer in connection.ResolveAll(pvsSite.servers))
{
var serverRow = NewPvsServerRow(pvsServer);
gridView.Rows.Add(serverRow);
}
}
finally
{
gridView.ResumeLayout();
}
}
private DataGridViewRow NewPvsServerRow(PVS_server pvsServer)
{
var ipAddressesCell = new DataGridViewTextBoxCell();
var firstPortCell = new DataGridViewTextBoxCell();
var lastPortCell = new DataGridViewTextBoxCell();
ipAddressesCell.Value = string.Join(", ", pvsServer.addresses);
firstPortCell.Value = pvsServer.first_port;
lastPortCell.Value = pvsServer.last_port;
var newRow = new DataGridViewRow { Tag = pvsSite };
newRow.Cells.AddRange(ipAddressesCell, firstPortCell, lastPortCell);
return newRow;
}
private void closeButton_Click(object sender, EventArgs e)
{
Close();
}
}
}

View File

@ -1,321 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="closeButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="closeButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="closeButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="closeButton.Location" type="System.Drawing.Point, System.Drawing">
<value>521, 3</value>
</data>
<data name="closeButton.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="closeButton.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="closeButton.Text" xml:space="preserve">
<value>閉じる(&amp;C)</value>
</data>
<data name="&gt;&gt;closeButton.Name" xml:space="preserve">
<value>closeButton</value>
</data>
<data name="&gt;&gt;closeButton.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;closeButton.Parent" xml:space="preserve">
<value>bottomPanel</value>
</data>
<data name="&gt;&gt;closeButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="ipAddressesColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ipAddressesColumn.HeaderText" xml:space="preserve">
<value>PVS サーバーの IP アドレス</value>
</data>
<data name="ipAddressesColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>140</value>
</data>
<metadata name="firstPortColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="firstPortColumn.HeaderText" xml:space="preserve">
<value>最初のポート</value>
</data>
<data name="firstPortColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>60</value>
</data>
<data name="firstPortColumn.Width" type="System.Int32, mscorlib">
<value>130</value>
</data>
<metadata name="lastPortColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="lastPortColumn.HeaderText" xml:space="preserve">
<value>最後のポート</value>
</data>
<data name="lastPortColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>60</value>
</data>
<data name="lastPortColumn.Width" type="System.Int32, mscorlib">
<value>130</value>
</data>
<data name="gridView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="gridView.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="gridView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="gridView.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 312</value>
</data>
<data name="gridView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;gridView.Name" xml:space="preserve">
<value>gridView</value>
</data>
<data name="&gt;&gt;gridView.Type" xml:space="preserve">
<value>XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;gridView.Parent" xml:space="preserve">
<value>mainPanel</value>
</data>
<data name="&gt;&gt;gridView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="mainPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="mainPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="mainPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
</data>
<data name="mainPanel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 5</value>
</data>
<data name="mainPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 317</value>
</data>
<data name="mainPanel.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;mainPanel.Name" xml:space="preserve">
<value>mainPanel</value>
</data>
<data name="&gt;&gt;mainPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;mainPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;mainPanel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="bottomPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="bottomPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="bottomPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 325</value>
</data>
<data name="bottomPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 29</value>
</data>
<data name="bottomPanel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;bottomPanel.Name" xml:space="preserve">
<value>bottomPanel</value>
</data>
<data name="&gt;&gt;bottomPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bottomPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;bottomPanel.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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>618, 362</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>634, 400</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>PVS サーバー</value>
</data>
<data name="&gt;&gt;ipAddressesColumn.Name" xml:space="preserve">
<value>ipAddressesColumn</value>
</data>
<data name="&gt;&gt;ipAddressesColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;firstPortColumn.Name" xml:space="preserve">
<value>firstPortColumn</value>
</data>
<data name="&gt;&gt;firstPortColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lastPortColumn.Name" xml:space="preserve">
<value>lastPortColumn</value>
</data>
<data name="&gt;&gt;lastPortColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsSiteDialog</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

@ -1,321 +0,0 @@
<?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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="closeButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="closeButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="closeButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="closeButton.Location" type="System.Drawing.Point, System.Drawing">
<value>521, 3</value>
</data>
<data name="closeButton.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="closeButton.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="closeButton.Text" xml:space="preserve">
<value>&amp;Close</value>
</data>
<data name="&gt;&gt;closeButton.Name" xml:space="preserve">
<value>closeButton</value>
</data>
<data name="&gt;&gt;closeButton.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;closeButton.Parent" xml:space="preserve">
<value>bottomPanel</value>
</data>
<data name="&gt;&gt;closeButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="ipAddressesColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ipAddressesColumn.HeaderText" xml:space="preserve">
<value>PVS Server IP Addresses</value>
</data>
<data name="ipAddressesColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>140</value>
</data>
<metadata name="firstPortColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="firstPortColumn.HeaderText" xml:space="preserve">
<value>First port</value>
</data>
<data name="firstPortColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>60</value>
</data>
<data name="firstPortColumn.Width" type="System.Int32, mscorlib">
<value>130</value>
</data>
<metadata name="lastPortColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="lastPortColumn.HeaderText" xml:space="preserve">
<value>Last port</value>
</data>
<data name="lastPortColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>60</value>
</data>
<data name="lastPortColumn.Width" type="System.Int32, mscorlib">
<value>130</value>
</data>
<data name="gridView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="gridView.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="gridView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="gridView.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 312</value>
</data>
<data name="gridView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;gridView.Name" xml:space="preserve">
<value>gridView</value>
</data>
<data name="&gt;&gt;gridView.Type" xml:space="preserve">
<value>XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;gridView.Parent" xml:space="preserve">
<value>mainPanel</value>
</data>
<data name="&gt;&gt;gridView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="mainPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="mainPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="mainPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
</data>
<data name="mainPanel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 5</value>
</data>
<data name="mainPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 317</value>
</data>
<data name="mainPanel.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;mainPanel.Name" xml:space="preserve">
<value>mainPanel</value>
</data>
<data name="&gt;&gt;mainPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;mainPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;mainPanel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="bottomPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="bottomPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="bottomPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 325</value>
</data>
<data name="bottomPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 29</value>
</data>
<data name="bottomPanel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;bottomPanel.Name" xml:space="preserve">
<value>bottomPanel</value>
</data>
<data name="&gt;&gt;bottomPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bottomPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;bottomPanel.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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>618, 362</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>634, 400</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>PVS Servers</value>
</data>
<data name="&gt;&gt;ipAddressesColumn.Name" xml:space="preserve">
<value>ipAddressesColumn</value>
</data>
<data name="&gt;&gt;ipAddressesColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;firstPortColumn.Name" xml:space="preserve">
<value>firstPortColumn</value>
</data>
<data name="&gt;&gt;firstPortColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lastPortColumn.Name" xml:space="preserve">
<value>lastPortColumn</value>
</data>
<data name="&gt;&gt;lastPortColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsSiteDialog</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

@ -1,321 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="closeButton.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="closeButton.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="closeButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="closeButton.Location" type="System.Drawing.Point, System.Drawing">
<value>521, 3</value>
</data>
<data name="closeButton.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="closeButton.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="closeButton.Text" xml:space="preserve">
<value>关闭(&amp;C)</value>
</data>
<data name="&gt;&gt;closeButton.Name" xml:space="preserve">
<value>closeButton</value>
</data>
<data name="&gt;&gt;closeButton.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;closeButton.Parent" xml:space="preserve">
<value>bottomPanel</value>
</data>
<data name="&gt;&gt;closeButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="ipAddressesColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ipAddressesColumn.HeaderText" xml:space="preserve">
<value>PVS 服务器 IP 地址</value>
</data>
<data name="ipAddressesColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>140</value>
</data>
<metadata name="firstPortColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="firstPortColumn.HeaderText" xml:space="preserve">
<value>第一个端口</value>
</data>
<data name="firstPortColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>60</value>
</data>
<data name="firstPortColumn.Width" type="System.Int32, mscorlib">
<value>130</value>
</data>
<metadata name="lastPortColumn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="lastPortColumn.HeaderText" xml:space="preserve">
<value>最后一个端口</value>
</data>
<data name="lastPortColumn.MinimumWidth" type="System.Int32, mscorlib">
<value>60</value>
</data>
<data name="lastPortColumn.Width" type="System.Int32, mscorlib">
<value>130</value>
</data>
<data name="gridView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="gridView.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="gridView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="gridView.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 312</value>
</data>
<data name="gridView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;gridView.Name" xml:space="preserve">
<value>gridView</value>
</data>
<data name="&gt;&gt;gridView.Type" xml:space="preserve">
<value>XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;gridView.Parent" xml:space="preserve">
<value>mainPanel</value>
</data>
<data name="&gt;&gt;gridView.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="mainPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="mainPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="mainPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
</data>
<data name="mainPanel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 5</value>
</data>
<data name="mainPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 317</value>
</data>
<data name="mainPanel.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="&gt;&gt;mainPanel.Name" xml:space="preserve">
<value>mainPanel</value>
</data>
<data name="&gt;&gt;mainPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;mainPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;mainPanel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="bottomPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Bottom</value>
</data>
<data name="bottomPanel.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="bottomPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 325</value>
</data>
<data name="bottomPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>602, 29</value>
</data>
<data name="bottomPanel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="&gt;&gt;bottomPanel.Name" xml:space="preserve">
<value>bottomPanel</value>
</data>
<data name="&gt;&gt;bottomPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;bottomPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;bottomPanel.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.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>618, 362</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Tahoma, 8pt</value>
</data>
<data name="$this.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>634, 400</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>PVS 服务器</value>
</data>
<data name="&gt;&gt;ipAddressesColumn.Name" xml:space="preserve">
<value>ipAddressesColumn</value>
</data>
<data name="&gt;&gt;ipAddressesColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;firstPortColumn.Name" xml:space="preserve">
<value>firstPortColumn</value>
</data>
<data name="&gt;&gt;firstPortColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;lastPortColumn.Name" xml:space="preserve">
<value>lastPortColumn</value>
</data>
<data name="&gt;&gt;lastPortColumn.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsSiteDialog</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

@ -1,57 +0,0 @@
namespace XenAdmin.Dialogs
{
partial class UpsellDialog
{
/// <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(UpsellDialog));
this.upsellPage1 = new XenAdmin.Controls.UpsellPage();
this.SuspendLayout();
//
// upsellPage1
//
resources.ApplyResources(this.upsellPage1, "upsellPage1");
this.upsellPage1.Name = "upsellPage1";
//
// UpsellDialog
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Controls.Add(this.upsellPage1);
this.HelpButton = false;
this.Name = "UpsellDialog";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private XenAdmin.Controls.UpsellPage upsellPage1;
}
}

View File

@ -1,61 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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 XenAdmin.Core;
namespace XenAdmin.Dialogs
{
public partial class UpsellDialog : XenDialogBase
{
public UpsellDialog(string blurb)
{
InitializeComponent();
upsellPage1.BlurbText = blurb;
upsellPage1.EnableOkButton();
CancelButton = upsellPage1.OKButton;
Height = upsellPage1.Height;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Text = BrandManager.BrandConsole;
}
public static void ShowUpsellDialog(string message, IWin32Window parent)
{
using (var upsellDialog = new UpsellDialog(message))
upsellDialog.ShowDialog(parent);
}
}
}

View File

@ -1,189 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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=2.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>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="upsellPage1.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"/>
<data name="upsellPage1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="upsellPage1.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 15</value>
</data>
<data name="upsellPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>364, 103</value>
</data>
<data name="upsellPage1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;upsellPage1.Name" xml:space="preserve">
<value>upsellPage1</value>
</data>
<data name="&gt;&gt;upsellPage1.Type" xml:space="preserve">
<value>XenAdmin.Controls.UpsellPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;upsellPage1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;upsellPage1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<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>394, 367</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 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.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>400, 10000</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>400, 32</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>12, 12, 12, 12</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>本文</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellDialog</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

@ -1,189 +0,0 @@
<?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=2.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>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="upsellPage1.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" />
<data name="upsellPage1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="upsellPage1.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 15</value>
</data>
<data name="upsellPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>364, 103</value>
</data>
<data name="upsellPage1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;upsellPage1.Name" xml:space="preserve">
<value>upsellPage1</value>
</data>
<data name="&gt;&gt;upsellPage1.Type" xml:space="preserve">
<value>XenAdmin.Controls.UpsellPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;upsellPage1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;upsellPage1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<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>394, 367</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 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.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>400, 10000</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>400, 32</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>12, 12, 12, 12</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>text</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellDialog</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

@ -1,189 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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=2.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>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="upsellPage1.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"/>
<data name="upsellPage1.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="upsellPage1.Location" type="System.Drawing.Point, System.Drawing">
<value>15, 15</value>
</data>
<data name="upsellPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>364, 103</value>
</data>
<data name="upsellPage1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;upsellPage1.Name" xml:space="preserve">
<value>upsellPage1</value>
</data>
<data name="&gt;&gt;upsellPage1.Type" xml:space="preserve">
<value>XenAdmin.Controls.UpsellPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;upsellPage1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;upsellPage1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<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>394, 367</value>
</data>
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 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.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>400, 10000</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>400, 32</value>
</data>
<data name="$this.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>12, 12, 12, 12</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>text</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellDialog</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

@ -1,184 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Timers;
using XenAdmin.Alerts;
using XenAdmin.Core;
using XenAdmin.Network;
using XenAPI;
using XenAdmin.Dialogs;
namespace XenAdmin
{
/// <summary>
/// A custom Timer that checks at regular intervals if any server licenses have expired. Also contains logic
/// for testing license state on connection as to whether we should warn about a soon to expire license.
/// </summary>
class LicenseTimer : System.Timers.Timer
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private static readonly TimeSpan EXPIRED_REMINDER_FREQUENCY = new TimeSpan(0, 0, 30, 0); // How frequently to remind user when a license has expired
private static readonly TimeSpan CONNECTION_WARN_THRESHOLD = new TimeSpan(29, 0, 0, 0); // When to start warning on connection
private static readonly TimeSpan RUNNING_WARN_FREQUENCY = new TimeSpan(1, 0, 0, 0); // How frequently to remind when XC is running
private static DateTime lastPeriodicLicenseWarning;
private readonly LicenseManagerLauncher licenseManagerLauncher;
public LicenseTimer(LicenseManagerLauncher licenseManagerLauncher)
{
Elapsed += new ElapsedEventHandler(licenseTimerElapsed);
AutoReset = true;
Interval = EXPIRED_REMINDER_FREQUENCY.TotalMilliseconds;
lastPeriodicLicenseWarning = DateTime.UtcNow;
this.licenseManagerLauncher = licenseManagerLauncher;
Start();
}
/// <summary>
/// Call this to check the server licenses when a connection has been made or on periodic check.
/// If a license has expired, the user is warned.
/// The logic for the periodic license warning check: only shows the less than 30 day warnings once every day XC is running.
/// </summary>
/// <param name="connection">The connection to check licenses on</param>
/// <param name="periodicCheck">Whehter it is a periodic check</param>
internal bool CheckActiveServerLicense(IXenConnection connection, bool periodicCheck)
{
// popup the license manager dialog if the feature is enabled via a registry key
bool popupLicenseMgr = HiddenFeatures.LicenseNagVisible;
// If the host is Dundee or greater, then the license alerts are generated by the server, so XenCenter shouldn't create any license alerts
if (!popupLicenseMgr)
return false;
DateTime now = DateTime.UtcNow - connection.ServerTimeOffset;
foreach (Host host in connection.Cache.Hosts)
{
DateTime expiryDate = host.LicenseExpiryUTC();
TimeSpan timeToExpiry = expiryDate.Subtract(now);
if (expiryDate < now)
{
// License has expired. Pop up the License Manager.
Program.Invoke(Program.MainWindow, () => showLicenseSummaryExpired(host, now, expiryDate, false, popupLicenseMgr));
return true;
}
if (timeToExpiry < CONNECTION_WARN_THRESHOLD &&
(!periodicCheck || DateTime.UtcNow.Subtract(lastPeriodicLicenseWarning) > RUNNING_WARN_FREQUENCY))
{
// If the license is sufficiently close to expiry date, show the warning
// If it's a periodic check, only warn if XC has been open for one day
if (periodicCheck)
lastPeriodicLicenseWarning = DateTime.UtcNow;
Program.Invoke(Program.MainWindow, () => showLicenseSummaryWarning(Helpers.GetName(host), now, expiryDate, false, popupLicenseMgr));
return true;
}
}
return false;
}
/// <summary>
/// Check to see if any licenses have expired as the timer periodically elapses.
/// </summary>
private void licenseTimerElapsed(object sender, ElapsedEventArgs e)
{
if (licenseManagerLauncher.LicenceDialogIsShowing)
return;
foreach (IXenConnection xc in ConnectionsManager.XenConnectionsCopy)
{
if (CheckActiveServerLicense(xc, true))
return;
}
}
/// <summary>
/// Shows the license summary dialog to the user as their license will soon expire.
/// </summary>
private void showLicenseSummaryWarning(String hostname, DateTime now, DateTime expiryDate, bool createAlert, bool popupLicenseMgr)
{
Program.AssertOnEventThread();
log.InfoFormat("Server {0} is within 30 days of expiry ({1}). Show License Summary if needed",
hostname,
HelpersGUI.DateTimeToString(expiryDate, Messages.DATEFORMAT_DMY_HMS, true));
if (createAlert)
{
var alert = new LicenseAlert(hostname, now, expiryDate) { LicenseManagerLauncher = licenseManagerLauncher };
Alert.AddAlert(alert);
}
if (!popupLicenseMgr)
return;
if (Program.RunInAutomatedTestMode)
log.Debug("In automated test mode: quashing license expiry warning");
else
{
licenseManagerLauncher.Parent = Program.MainWindow;
licenseManagerLauncher.LaunchIfRequired(true, ConnectionsManager.XenConnections);
}
}
/// <summary>
/// Shows the license summary dialog to the user as their license has expired.
/// </summary>
/// <param name="host"></param>
/// <param name="now"></param>
/// <param name="expiryDate">Should be expressed in local time.</param>
/// <param name="createAlert"></param>
/// <param name="popupLicenseMgr"></param>
private void showLicenseSummaryExpired(Host host, DateTime now, DateTime expiryDate, bool createAlert, bool popupLicenseMgr)
{
Program.AssertOnEventThread();
log.InfoFormat("Server {0} has expired ({1}). Show License Summary if needed",
host.Name(),
HelpersGUI.DateTimeToString(expiryDate, Messages.DATEFORMAT_DMY_HMS, true));
if (createAlert)
{
var alert = new LicenseAlert(host.Name(), now, expiryDate) { LicenseManagerLauncher = licenseManagerLauncher };
Alert.AddAlert(alert);
}
if (!popupLicenseMgr)
return;
if (Program.RunInAutomatedTestMode)
log.Debug("In automated test mode: quashing license expiry warning");
else
licenseManagerLauncher.LaunchIfRequired(true, ConnectionsManager.XenConnections);
}
}
}

View File

@ -27,10 +27,6 @@ namespace XenAdmin
components.Dispose();
PluginManager.Dispose();
log.Debug("MainWindow disposing of license timer");
if (licenseTimer != null)
licenseTimer.Dispose();
}
log.Debug("Before MainWindow base.Dispose()");
@ -63,14 +59,10 @@ namespace XenAdmin
this.TabPageNICs = new System.Windows.Forms.TabPage();
this.TabPagePeformance = new System.Windows.Forms.TabPage();
this.TabPageHA = new System.Windows.Forms.TabPage();
this.TabPageHAUpsell = new System.Windows.Forms.TabPage();
this.TabPageSnapshots = new System.Windows.Forms.TabPage();
this.TabPageWLB = new System.Windows.Forms.TabPage();
this.TabPageWLBUpsell = new System.Windows.Forms.TabPage();
this.TabPageAD = new System.Windows.Forms.TabPage();
this.TabPageADUpsell = new System.Windows.Forms.TabPage();
this.TabPageGPU = new System.Windows.Forms.TabPage();
this.TabPagePvs = new System.Windows.Forms.TabPage();
this.TabPageSearch = new System.Windows.Forms.TabPage();
this.TabPageDockerProcess = new System.Windows.Forms.TabPage();
this.TabPageDockerDetails = new System.Windows.Forms.TabPage();
@ -83,7 +75,6 @@ namespace XenAdmin
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.TitleIcon = new System.Windows.Forms.PictureBox();
this.TitleLabel = new System.Windows.Forms.Label();
this.LicenseStatusTitleLabel = new System.Windows.Forms.Label();
this.loggedInLabel1 = new XenAdmin.Controls.LoggedInLabel();
this.labelFiltersOnOff = new System.Windows.Forms.Label();
this.ToolStrip = new XenAdmin.Controls.ToolStripEx();
@ -188,7 +179,6 @@ namespace XenAdmin
this.toolStripMenuItemResetCertificate = new XenAdmin.Commands.CommandToolStripMenuItem();
this.maintenanceModeToolStripMenuItem1 = new XenAdmin.Commands.CommandToolStripMenuItem();
this.controlDomainMemoryToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.RemoveCrashdumpsToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.HostPasswordToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.ChangeRootPasswordToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.forgetSavedPasswordToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
@ -258,8 +248,6 @@ namespace XenAdmin
this.pluginItemsPlaceHolderToolStripMenuItem6 = new System.Windows.Forms.ToolStripMenuItem();
this.templatePropertiesToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.toolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.bugToolToolStripMenuItem = new XenAdmin.Commands.CommandToolStripMenuItem();
this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator();
this.pluginItemsPlaceHolderToolStripMenuItem7 = new System.Windows.Forms.ToolStripMenuItem();
this.preferencesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.windowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -275,8 +263,7 @@ namespace XenAdmin
this.xenCenterPluginsOnlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
this.pluginItemsPlaceHolderToolStripMenuItem8 = new System.Windows.Forms.ToolStripMenuItem();
this.downloadLatestSourceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutXenSourceAdminToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.MainMenuBar = new XenAdmin.Controls.MenuStripEx();
this.updateClientToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.downloadInstallToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -359,14 +346,10 @@ namespace XenAdmin
this.TheTabControl.Controls.Add(this.TabPageNICs);
this.TheTabControl.Controls.Add(this.TabPagePeformance);
this.TheTabControl.Controls.Add(this.TabPageHA);
this.TheTabControl.Controls.Add(this.TabPageHAUpsell);
this.TheTabControl.Controls.Add(this.TabPageSnapshots);
this.TheTabControl.Controls.Add(this.TabPageWLB);
this.TheTabControl.Controls.Add(this.TabPageWLBUpsell);
this.TheTabControl.Controls.Add(this.TabPageAD);
this.TheTabControl.Controls.Add(this.TabPageADUpsell);
this.TheTabControl.Controls.Add(this.TabPageGPU);
this.TheTabControl.Controls.Add(this.TabPagePvs);
this.TheTabControl.Controls.Add(this.TabPageSearch);
this.TheTabControl.Controls.Add(this.TabPageDockerProcess);
this.TheTabControl.Controls.Add(this.TabPageDockerDetails);
@ -448,12 +431,6 @@ namespace XenAdmin
this.TabPageHA.Name = "TabPageHA";
this.TabPageHA.UseVisualStyleBackColor = true;
//
// TabPageHAUpsell
//
resources.ApplyResources(this.TabPageHAUpsell, "TabPageHAUpsell");
this.TabPageHAUpsell.Name = "TabPageHAUpsell";
this.TabPageHAUpsell.UseVisualStyleBackColor = true;
//
// TabPageSnapshots
//
resources.ApplyResources(this.TabPageSnapshots, "TabPageSnapshots");
@ -466,36 +443,18 @@ namespace XenAdmin
this.TabPageWLB.Name = "TabPageWLB";
this.TabPageWLB.UseVisualStyleBackColor = true;
//
// TabPageWLBUpsell
//
resources.ApplyResources(this.TabPageWLBUpsell, "TabPageWLBUpsell");
this.TabPageWLBUpsell.Name = "TabPageWLBUpsell";
this.TabPageWLBUpsell.UseVisualStyleBackColor = true;
//
// TabPageAD
//
resources.ApplyResources(this.TabPageAD, "TabPageAD");
this.TabPageAD.Name = "TabPageAD";
this.TabPageAD.UseVisualStyleBackColor = true;
//
// TabPageADUpsell
//
resources.ApplyResources(this.TabPageADUpsell, "TabPageADUpsell");
this.TabPageADUpsell.Name = "TabPageADUpsell";
this.TabPageADUpsell.UseVisualStyleBackColor = true;
//
// TabPageGPU
//
resources.ApplyResources(this.TabPageGPU, "TabPageGPU");
this.TabPageGPU.Name = "TabPageGPU";
this.TabPageGPU.UseVisualStyleBackColor = true;
//
// TabPagePvs
//
resources.ApplyResources(this.TabPagePvs, "TabPagePvs");
this.TabPagePvs.Name = "TabPagePvs";
this.TabPagePvs.UseVisualStyleBackColor = true;
//
// TabPageSearch
//
resources.ApplyResources(this.TabPageSearch, "TabPageSearch");
@ -531,6 +490,7 @@ namespace XenAdmin
resources.ApplyResources(this.updatesPage, "updatesPage");
this.updatesPage.BackColor = System.Drawing.SystemColors.Window;
this.updatesPage.Name = "updatesPage";
this.updatesPage.Load += new System.EventHandler(this.updatesPage_Load);
//
// cdnUpdatesPage
//
@ -556,7 +516,6 @@ namespace XenAdmin
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.TitleIcon, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.TitleLabel, 1, 0);
this.tableLayoutPanel1.Controls.Add(this.LicenseStatusTitleLabel, 2, 0);
this.tableLayoutPanel1.Controls.Add(this.loggedInLabel1, 4, 0);
this.tableLayoutPanel1.Controls.Add(this.labelFiltersOnOff, 3, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
@ -575,13 +534,6 @@ namespace XenAdmin
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;
//
// loggedInLabel1
//
resources.ApplyResources(this.loggedInLabel1, "loggedInLabel1");
@ -752,7 +704,6 @@ namespace XenAdmin
this.UnpauseVmToolbarButton.Image = global::XenAdmin.Properties.Resources._000_Resumed_h32bit_24_green;
this.UnpauseVmToolbarButton.Name = "UnpauseVmToolbarButton";
//
//
// ForceShutdownToolbarButton
//
this.ForceShutdownToolbarButton.Command = new XenAdmin.Commands.ForceVMShutDownCommand();
@ -1161,7 +1112,6 @@ namespace XenAdmin
this.toolStripMenuItemCertificate,
this.maintenanceModeToolStripMenuItem1,
this.controlDomainMemoryToolStripMenuItem,
this.RemoveCrashdumpsToolStripMenuItem,
this.HostPasswordToolStripMenuItem,
this.toolStripSeparator25,
this.destroyServerToolStripMenuItem,
@ -1327,12 +1277,6 @@ namespace XenAdmin
this.controlDomainMemoryToolStripMenuItem.Name = "controlDomainMemoryToolStripMenuItem";
resources.ApplyResources(this.controlDomainMemoryToolStripMenuItem, "controlDomainMemoryToolStripMenuItem");
//
// RemoveCrashdumpsToolStripMenuItem
//
this.RemoveCrashdumpsToolStripMenuItem.Command = new XenAdmin.Commands.RemoveHostCrashDumpsCommand();
this.RemoveCrashdumpsToolStripMenuItem.Name = "RemoveCrashdumpsToolStripMenuItem";
resources.ApplyResources(this.RemoveCrashdumpsToolStripMenuItem, "RemoveCrashdumpsToolStripMenuItem");
//
// HostPasswordToolStripMenuItem
//
this.HostPasswordToolStripMenuItem.Command = new XenAdmin.Commands.HostPasswordCommand();
@ -1788,52 +1732,11 @@ namespace XenAdmin
// toolsToolStripMenuItem
//
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.bugToolToolStripMenuItem,
this.toolStripSeparator14,
this.pluginItemsPlaceHolderToolStripMenuItem7,
this.preferencesToolStripMenuItem});
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
resources.ApplyResources(this.toolsToolStripMenuItem, "toolsToolStripMenuItem");
//
// bugToolToolStripMenuItem
//
this.bugToolToolStripMenuItem.Command = new XenAdmin.Commands.BugToolCommand();
this.bugToolToolStripMenuItem.Name = "bugToolToolStripMenuItem";
resources.ApplyResources(this.bugToolToolStripMenuItem, "bugToolToolStripMenuItem");
//
// toolStripSeparator14
//
this.toolStripSeparator14.Name = "toolStripSeparator14";
resources.ApplyResources(this.toolStripSeparator14, "toolStripSeparator14");
//
// LicenseManagerMenuItem
//
//this.LicenseManagerMenuItem.Name = "LicenseManagerMenuItem";
//resources.ApplyResources(this.LicenseManagerMenuItem, "LicenseManagerMenuItem");
//this.LicenseManagerMenuItem.Click += new System.EventHandler(this.LicenseManagerMenuItem_Click);
//
// toolStripSeparator13
//
//this.toolStripSeparator13.Name = "toolStripSeparator13";
//resources.ApplyResources(this.toolStripSeparator13, "toolStripSeparator13");
//
// installNewUpdateToolStripMenuItem
//
//this.installNewUpdateToolStripMenuItem.Command = new XenAdmin.Commands.InstallNewUpdateCommand();
//this.installNewUpdateToolStripMenuItem.Name = "installNewUpdateToolStripMenuItem";
//resources.ApplyResources(this.installNewUpdateToolStripMenuItem, "installNewUpdateToolStripMenuItem");
//
// rollingUpgradeToolStripMenuItem
//
//this.rollingUpgradeToolStripMenuItem.Command = new XenAdmin.Commands.RollingUpgradeCommand();
//this.rollingUpgradeToolStripMenuItem.Name = "rollingUpgradeToolStripMenuItem";
//resources.ApplyResources(this.rollingUpgradeToolStripMenuItem, "rollingUpgradeToolStripMenuItem");
//
// toolStripSeparator6
//
//this.toolStripSeparator6.Name = "toolStripSeparator6";
//resources.ApplyResources(this.toolStripSeparator6, "toolStripSeparator6");
//
// pluginItemsPlaceHolderToolStripMenuItem7
//
this.pluginItemsPlaceHolderToolStripMenuItem7.Name = "pluginItemsPlaceHolderToolStripMenuItem7";
@ -1870,8 +1773,7 @@ namespace XenAdmin
this.xenCenterPluginsOnlineToolStripMenuItem,
this.toolStripSeparator7,
this.pluginItemsPlaceHolderToolStripMenuItem8,
this.downloadLatestSourceToolStripMenuItem,
this.aboutXenSourceAdminToolStripMenuItem});
this.aboutToolStripMenuItem});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
resources.ApplyResources(this.helpToolStripMenuItem, "helpToolStripMenuItem");
//
@ -1932,17 +1834,11 @@ namespace XenAdmin
this.pluginItemsPlaceHolderToolStripMenuItem8.Name = "pluginItemsPlaceHolderToolStripMenuItem8";
resources.ApplyResources(this.pluginItemsPlaceHolderToolStripMenuItem8, "pluginItemsPlaceHolderToolStripMenuItem8");
//
// downloadLatestSourceToolStripMenuItem
// aboutToolStripMenuItem
//
this.downloadLatestSourceToolStripMenuItem.Name = "downloadLatestSourceToolStripMenuItem";
resources.ApplyResources(this.downloadLatestSourceToolStripMenuItem, "downloadLatestSourceToolStripMenuItem");
this.downloadLatestSourceToolStripMenuItem.Click += new System.EventHandler(this.downloadLatestSourceToolStripMenuItem_Click);
//
// aboutXenSourceAdminToolStripMenuItem
//
this.aboutXenSourceAdminToolStripMenuItem.Name = "aboutXenSourceAdminToolStripMenuItem";
resources.ApplyResources(this.aboutXenSourceAdminToolStripMenuItem, "aboutXenSourceAdminToolStripMenuItem");
this.aboutXenSourceAdminToolStripMenuItem.Click += new System.EventHandler(this.aboutXenSourceAdminToolStripMenuItem_Click);
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
resources.ApplyResources(this.aboutToolStripMenuItem, "aboutToolStripMenuItem");
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutXenSourceAdminToolStripMenuItem_Click);
//
// MainMenuBar
//
@ -1993,7 +1889,6 @@ namespace XenAdmin
//
this.downloadSourceToolStripMenuItem.Name = "downloadSourceToolStripMenuItem";
resources.ApplyResources(this.downloadSourceToolStripMenuItem, "downloadSourceToolStripMenuItem");
this.downloadSourceToolStripMenuItem.Click += new System.EventHandler(this.downloadSourceToolStripMenuItem_Click);
//
// securityGroupsToolStripMenuItem
//
@ -2176,7 +2071,6 @@ namespace XenAdmin
private XenAdmin.Commands.CommandToolStripMenuItem removeHostToolStripMenuItem;
private XenAdmin.Commands.AddSelectedHostToPoolToolStripMenuItem addServerToPoolMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
private XenAdmin.Commands.CommandToolStripMenuItem RemoveCrashdumpsToolStripMenuItem;
private XenAdmin.Commands.CommandToolStripMenuItem maintenanceModeToolStripMenuItem1;
private XenAdmin.Commands.CommandToolStripMenuItem backupToolStripMenuItem;
private XenAdmin.Commands.CommandToolStripMenuItem restoreFromBackupToolStripMenuItem;
@ -2211,11 +2105,6 @@ namespace XenAdmin
private XenAdmin.Commands.CommandToolStripMenuItem duplicateTemplateToolStripMenuItem;
private XenAdmin.Commands.CommandToolStripMenuItem uninstallTemplateToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolsToolStripMenuItem;
private XenAdmin.Commands.CommandToolStripMenuItem bugToolToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator14;
//private System.Windows.Forms.ToolStripMenuItem LicenseManagerMenuItem;
//private CommandToolStripMenuItem installNewUpdateToolStripMenuItem;
//private System.Windows.Forms.ToolStripSeparator toolStripSeparator6;
private System.Windows.Forms.ToolStripMenuItem preferencesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem windowToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
@ -2226,7 +2115,7 @@ namespace XenAdmin
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem17;
private System.Windows.Forms.ToolStripMenuItem xenSourceOnTheWebToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator7;
private System.Windows.Forms.ToolStripMenuItem aboutXenSourceAdminToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private XenAdmin.Controls.MenuStripEx MainMenuBar;
private System.Windows.Forms.Panel MenuPanel;
//private System.Windows.Forms.ToolStripSeparator toolStripSeparator13;
@ -2246,9 +2135,7 @@ namespace XenAdmin
private System.Windows.Forms.TabPage TabPageNICs;
private System.Windows.Forms.TabPage TabPagePeformance;
private System.Windows.Forms.TabPage TabPageHA;
private System.Windows.Forms.TabPage TabPageHAUpsell;
internal System.Windows.Forms.TabPage TabPageWLB;
private System.Windows.Forms.TabPage TabPageWLBUpsell;
private System.Windows.Forms.TabPage TabPageSnapshots;
private System.Windows.Forms.TabPage TabPageDockerProcess;
internal System.Windows.Forms.TabPage TabPageDockerDetails;
@ -2337,15 +2224,12 @@ namespace XenAdmin
private XenAdmin.Commands.CommandToolStripButton restartContainerToolStripButton;
private XenAdmin.Commands.AssignGroupToolStripMenuItemVMSS assignSnapshotScheduleToolStripMenuItem;
private XenAdmin.Commands.CommandToolStripMenuItem VMSnapshotScheduleToolStripMenuItem;
private System.Windows.Forms.TabPage TabPageADUpsell;
private System.Windows.Forms.TabPage TabPageCvmConsole;
private System.Windows.Forms.TabPage TabPagePvs;
private XenAdmin.Commands.CommandToolStripMenuItem controlDomainMemoryToolStripMenuItem;
private XenAdmin.Commands.CommandToolStripMenuItem enablePVSReadcachingToolStripMenuItem;
private XenAdmin.Commands.CommandToolStripMenuItem disablePVSReadcachingToolStripMenuItem;
private System.Windows.Forms.TabPage TabPageUSB;
private XenAdmin.Commands.CommandToolStripMenuItem disableCbtToolStripMenuItem;
private System.Windows.Forms.Label LicenseStatusTitleLabel;
private Controls.GradientPanel.VerticalGradientPanel TitleBackPanel;
private XenAdmin.Commands.CommandToolStripMenuItem menuItemRemoveFromPool;
private XenAdmin.Commands.CommandToolStripMenuItem conversionToolStripMenuItem;
@ -2364,7 +2248,6 @@ namespace XenAdmin
private System.Windows.Forms.ToolStripSeparator toolStripSeparator32;
private XenAdmin.Commands.CommandToolStripMenuItem toolStripMenuItemVtpm;
private System.Windows.Forms.ToolStripMenuItem downloadSourceToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem downloadLatestSourceToolStripMenuItem;
private System.Windows.Forms.Label labelFiltersOnOff;
private TabPages.ManageCdnUpdatesPage cdnUpdatesPage;
private System.Windows.Forms.ToolStripSplitButton statusButtonErrors;

View File

@ -88,20 +88,16 @@ namespace XenAdmin
internal readonly ConsolePanel ConsolePanel = new ConsolePanel();
internal readonly CvmConsolePanel CvmConsolePanel = new CvmConsolePanel();
internal readonly HAPage HAPage = new HAPage();
internal readonly HAUpsellPage HAUpsellPage = new HAUpsellPage();
internal readonly HomePage HomePage = new HomePage();
internal readonly SearchPage SearchPage = new SearchPage();
internal readonly NetworkPage NetworkPage = new NetworkPage();
internal readonly NICPage NICPage = new NICPage();
internal readonly WlbPage WlbPage = new WlbPage();
internal readonly WLBUpsellPage WLBUpsellPage = new WLBUpsellPage();
internal readonly SrStoragePage SrStoragePage = new SrStoragePage();
internal readonly PhysicalStoragePage PhysicalStoragePage = new PhysicalStoragePage();
internal readonly VMStoragePage VMStoragePage = new VMStoragePage();
internal readonly AdPage AdPage = new AdPage();
internal readonly ADUpsellPage AdUpsellPage = new ADUpsellPage();
internal readonly GpuPage GpuPage = new GpuPage();
internal readonly PvsPage PvsPage = new PvsPage();
internal readonly DockerProcessPage DockerProcessPage = new DockerProcessPage();
internal readonly DockerDetailsPage DockerDetailsPage = new DockerDetailsPage();
internal readonly UsbPage UsbPage = new UsbPage();
@ -129,9 +125,6 @@ namespace XenAdmin
public readonly PluginManager PluginManager;
private readonly ContextMenuBuilder contextMenuBuilder;
private readonly LicenseManagerLauncher licenseManagerLauncher;
private readonly LicenseTimer licenseTimer;
private Dictionary<ToolStripMenuItem, int> pluginMenuItemStartIndexes = new Dictionary<ToolStripMenuItem, int>();
private bool expandTreeNodesOnStartup;
@ -155,7 +148,7 @@ namespace XenAdmin
public MainWindow(string[] args)
{
_commandLineArgs = args;
licenseManagerLauncher = new LicenseManagerLauncher(Program.MainWindow);
//licenseManagerLauncher = new LicenseManagerLauncher(Program.MainWindow);
InvokeHelper.Initialize(this);
ConnectionsManager.XenConnections.Clear();
@ -185,7 +178,6 @@ namespace XenAdmin
components.Add(WlbPage);
components.Add(AdPage);
components.Add(GpuPage);
components.Add(PvsPage);
components.Add(SearchPage);
components.Add(DockerProcessPage);
components.Add(DockerDetailsPage);
@ -202,15 +194,11 @@ namespace XenAdmin
AddTabContents(CvmConsolePanel, TabPageCvmConsole);
AddTabContents(NetworkPage, TabPageNetwork);
AddTabContents(HAPage, TabPageHA);
AddTabContents(HAUpsellPage, TabPageHAUpsell);
AddTabContents(HomePage, TabPageHome);
AddTabContents(WlbPage, TabPageWLB);
AddTabContents(WLBUpsellPage, TabPageWLBUpsell);
AddTabContents(PhysicalStoragePage, TabPagePhysicalStorage);
AddTabContents(AdPage, TabPageAD);
AddTabContents(AdUpsellPage, TabPageADUpsell);
AddTabContents(GpuPage, TabPageGPU);
AddTabContents(PvsPage, TabPagePvs);
AddTabContents(SearchPage, TabPageSearch);
AddTabContents(DockerProcessPage, TabPageDockerProcess);
AddTabContents(DockerDetailsPage, TabPageDockerDetails);
@ -251,26 +239,26 @@ namespace XenAdmin
SelectionManager.BindTo(MainMenuBar.Items, this);
SelectionManager.BindTo(ToolStrip.Items, this);
licenseTimer = new LicenseTimer(licenseManagerLauncher);
GeneralPage.LicenseLauncher = licenseManagerLauncher;
updateClientToolStripMenuItem.Visible = false;
xenSourceOnTheWebToolStripMenuItem.Text = string.Format(xenSourceOnTheWebToolStripMenuItem.Text,
BrandManager.ProductBrand);
viewApplicationLogToolStripMenuItem.Text = string.Format(viewApplicationLogToolStripMenuItem.Text, BrandManager.BrandConsole);
xenCenterPluginsOnlineToolStripMenuItem.Text = string.Format(xenCenterPluginsOnlineToolStripMenuItem.Text, BrandManager.BrandConsole);
aboutXenSourceAdminToolStripMenuItem.Text = string.Format(aboutXenSourceAdminToolStripMenuItem.Text, BrandManager.BrandConsole);
aboutToolStripMenuItem.Text = string.Format(aboutToolStripMenuItem.Text, BrandManager.BrandConsole);
templatesToolStripMenuItem1.Text = string.Format(templatesToolStripMenuItem1.Text, BrandManager.ProductBrand);
updateClientToolStripMenuItem.Text = string.Format(updateClientToolStripMenuItem.Text, BrandManager.BrandConsole);
toolStripMenuItemCfu.Text = string.Format(toolStripMenuItemCfu.Text, BrandManager.BrandConsole);
toolStripSeparator7.Visible = xenSourceOnTheWebToolStripMenuItem.Visible = xenCenterPluginsOnlineToolStripMenuItem.Visible = !HiddenFeatures.ToolStripMenuItemHidden;
helpTopicsToolStripMenuItem.Visible = false;
helpContextMenuItem.Visible = false;
toolStripMenuItem15.Visible = false; // Separator
xenCenterPluginsOnlineToolStripMenuItem.Visible = false;
statusButtonAlerts.Visible = statusButtonUpdates.Visible = statusButtonCdnUpdates.Visible = statusButtonProgress.Visible = statusButtonErrors.Visible = false;
statusButtonUpdates.ToolTipText = string.Format(statusButtonUpdates.ToolTipText, BrandManager.ProductVersion821);
statusButtonCdnUpdates.ToolTipText = string.Format(statusButtonCdnUpdates.ToolTipText, BrandManager.ProductBrand, BrandManager.ProductVersionPost82);
downloadLatestSourceToolStripMenuItem.Text = Messages.DOWNLOAD_LATEST_SOURCE;
}
private void RegisterEvents()
@ -686,34 +674,11 @@ namespace XenAdmin
c.CachePopulated -= connection_CachePopulatedOnStartup;
if (expandTreeNodesOnStartup)
TrySelectNewNode(c, false, true, false);
Program.Invoke(this, ShowAboutDialogOnStartup);
}
private void Connection_ConnectionStateChangedOnStartup(IXenConnection c)
{
c.ConnectionStateChanged -= Connection_ConnectionStateChangedOnStartup;
Program.Invoke(Program.MainWindow, delegate
{
connectionsInProgressOnStartup--;
// show the About dialog if this was the last connection in progress and the connection failed
if (!c.IsConnected)
ShowAboutDialogOnStartup();
});
}
/// <summary>
/// Show the About dialog after all conncections kicked-off on startup have finished the connection phase (cache populated)
/// Must be called on the event thread.
/// </summary>
private void ShowAboutDialogOnStartup()
{
Program.AssertOnEventThread();
if (connectionsInProgressOnStartup > 0)
return;
if (Properties.Settings.Default.ShowAboutDialog && HiddenFeatures.LicenseNagVisible)
ShowForm(typeof(AboutDialog));
}
#region Commnad line args processing
@ -728,10 +693,6 @@ namespace XenAdmin
log.DebugFormat("CLI: Importing VM export from {0}", args[1]);
OpenGlobalImportWizard(args[1]);
break;
case "license":
log.DebugFormat("CLI: Installing license from {0}", args[1]);
LaunchLicensePicker(args[1]);
break;
case "restore":
log.DebugFormat("CLI: Restoring host backup from {0}", args[1]);
new RestoreHostFromBackupCommand(this, null, args[1]).Run();
@ -977,7 +938,7 @@ namespace XenAdmin
using (var dlog = new ErrorDialog(msg)
{
WindowTitle = title,
ShowLinkLabel = !HiddenFeatures.LinkLabelHidden,
ShowLinkLabel = true,
LinkText = url,
LinkData = url
})
@ -1005,7 +966,7 @@ namespace XenAdmin
using (var dlog = new ErrorDialog(msg)
{
WindowTitle = title,
ShowLinkLabel = !HiddenFeatures.LinkLabelHidden,
ShowLinkLabel = true,
LinkText = url,
LinkData = url
})
@ -1029,27 +990,6 @@ namespace XenAdmin
if (HelpersGUI.iSCSIisUsed())
HelpersGUI.PerformIQNCheck();
if (licenseTimer != null)
licenseTimer.CheckActiveServerLicense(connection, false);
if (BrandManager.BrandConsole == "[XenCenter]" || BrandManager.BrandConsole == "XenCenter")
{
Pool pool = Helpers.GetPoolOfOne(connection);
if (pool != null && pool.GetHealthCheckStatus() == Pool.HealthCheckStatus.Enabled)
{
Program.BeginInvoke(Program.MainWindow, () =>
{
using (var dlg = new InformationDialog(
string.Format(Messages.PROBLEM_HEALTH_CHECK_ON_CONNECTION, pool.Name(), BrandManager.BrandConsole),
ThreeButtonDialog.ButtonOK))
{
if (dlg.ShowDialog() == DialogResult.OK)
new DisableHealthCheckAction(pool).RunAsync();
}
});
}
}
if (!Program.RunInAutomatedTestMode && !Helpers.CommonCriteriaCertificationRelease &&
!Helpers.CloudOrGreater(coordinator))
{
@ -1488,10 +1428,6 @@ namespace XenAdmin
// 'Home' tab is only visible if the 'Overview' tree node is selected, or if the tree is
// empty (i.e. at startup).
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 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;
bool multi = SelectionManager.Selection.Count > 1;
@ -1572,22 +1508,9 @@ namespace XenAdmin
if (!multi && !SearchMode && (isRealVMSelected || (isHostSelected && isHostLive)))
newTabs.Add(TabPagePeformance);
if (!multi && !SearchMode && isPoolSelected)
newTabs.Add(ha_upsell ? TabPageHAUpsell : TabPageHA);
if (!multi && !SearchMode && isRealVMSelected)
newTabs.Add(TabPageSnapshots);
if (!multi && !SearchMode && isPoolSelected)
newTabs.Add(wlb_upsell ? TabPageWLBUpsell : TabPageWLB);
if (!multi && !SearchMode && (isPoolSelected || isPoolOrLiveStandaloneHost))
newTabs.Add(ad_upsell ? TabPageADUpsell : TabPageAD);
if (!multi && !SearchMode && isPoolOrLiveStandaloneHost && !Helpers.FeatureForbidden(SelectionManager.Selection.FirstAsXenObject, Host.RestrictPvsCache)
&& Helpers.PvsCacheCapability(selectionConnection))
newTabs.Add(TabPagePvs);
foreach (var f in otherFeatures)
newTabs.Add(f.TabPage);
@ -1832,86 +1755,6 @@ namespace XenAdmin
ShowForm(typeof(AboutDialog));
}
/// <summary>
/// Apply license, if HostAncestorOfSelectedNode is null, show host picker, if filepath == "" show filepicker
/// </summary>
public void LaunchLicensePicker(string filepath)
{
HelpersGUI.BringFormToFront(this);
OpenFileDialog dialog = null;
DialogResult result = DialogResult.Cancel;
if (filepath == "")
{
if (!Program.RunInAutomatedTestMode)
{
dialog = new OpenFileDialog();
dialog.Multiselect = false;
dialog.Title = Messages.SELECT_LICENSE_KEY;
dialog.CheckFileExists = true;
dialog.CheckPathExists = true;
dialog.Filter = string.Format("{0} (*.xslic)|*.xslic|{1} (*.*)|*.*",
string.Format(Messages.XS_LICENSE_FILES, BrandManager.ProductBrand), Messages.ALL_FILES);
dialog.ShowHelp = true;
dialog.HelpRequest += dialog_HelpRequest;
result = dialog.ShowDialog(this);
}
}
else
{
result = DialogResult.OK;
}
if (result == DialogResult.OK || Program.RunInAutomatedTestMode)
{
if (Program.RunInAutomatedTestMode)
{
filepath = string.Empty;
}
else if (filepath == string.Empty && dialog != null)
{
filepath = dialog.FileName;
}
Host hostAncestor = SelectionManager.Selection.Count == 1 ? SelectionManager.Selection[0].HostAncestor : null;
if (SelectionManager.Selection.Count == 1 && hostAncestor == null)
{
SelectHostDialog hostdialog = new SelectHostDialog();
hostdialog.TheHost = null;
hostdialog.Owner = this;
hostdialog.ShowDialog(this);
if (string.IsNullOrEmpty(filepath) || hostdialog.DialogResult != DialogResult.OK)
{
return;
}
hostAncestor = hostdialog.TheHost;
}
DoLicenseAction(hostAncestor, filepath);
}
}
private void DoLicenseAction(Host host, string filePath)
{
//null can happen if the application is started from, say,
//double clicking on a license file without any connections on the tree
if (host == null)
return;
var action = new ApplyLicenseAction(host, filePath);
using (var actionProgress = new ActionProgressDialog(action, ProgressBarStyle.Marquee))
{
actionProgress.Text = Messages.INSTALL_LICENSE_KEY;
actionProgress.ShowDialog(this);
}
}
private void dialog_HelpRequest(object sender, EventArgs e)
{
Help.HelpManager.Launch("LicenseKeyDialog");
}
private void TheTabControl_Deselected(object sender, TabControlEventArgs e)
{
TabPage t = e.TabPage;
@ -2127,10 +1970,6 @@ namespace XenAdmin
{
DockerDetailsPage.DockerContainer = SelectionManager.Selection.First as DockerContainer;
}
else if (t == TabPagePvs)
{
PvsPage.Connection = SelectionManager.Selection.GetConnectionOfFirstItem();
}
}
if (t == TabPageSearch)
@ -2725,9 +2564,6 @@ namespace XenAdmin
downloadSourceToolStripMenuItem.Text = string.Format(Messages.DOWNLOAD_SOURCE, BrandManager.BrandConsole, updateAlert.NewVersion.Version);
}
var clientVersion = Updates.ClientVersions.FirstOrDefault();
downloadLatestSourceToolStripMenuItem.Text = clientVersion != null
? string.Format(Messages.DOWNLOAD_SOURCE, BrandManager.BrandConsole, clientVersion.Version)
: string.Format(Messages.DOWNLOAD_LATEST_SOURCE, BrandManager.BrandConsole);
updateClientToolStripMenuItem.Visible = updateAlert != null;
}
@ -2868,9 +2704,6 @@ namespace XenAdmin
if (navigationPane.currentMode == NavigationPane.NavigationMode.Notifications)
return;
var licenseColor = VerticalGradientPanel.TextColor;
var licenseText = string.Empty;
if (SearchMode && SearchPage.Search != null)
{
TitleLabel.Text = HelpersGUI.GetLocalizedSearchName(SearchPage.Search);
@ -2882,8 +2715,6 @@ namespace XenAdmin
TitleLabel.Text = xenObject.NameWithLocation();
TitleIcon.Image = Images.GetImage16For(xenObject);
licenseText = GetLicenseStatusText(xenObject, out licenseColor);
// 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)
if (SelectionManager.Selection[0].PoolAncestor == null && SelectionManager.Selection[0].HostAncestor == null)
@ -2898,31 +2729,12 @@ namespace XenAdmin
loggedInLabel1.Connection = null;
}
LicenseStatusTitleLabel.Text = licenseText;
LicenseStatusTitleLabel.ForeColor = licenseColor;
SetTitleLabelMaxWidth();
}
private string GetLicenseStatusText(IXenObject xenObject, out Color foreColor)
{
foreColor = VerticalGradientPanel.TextColor;
if (xenObject is Pool pool && pool.Connection != null && pool.Connection.IsConnected && pool.Connection.CacheIsPopulated)
{
return string.Format(Messages.MAINWINDOW_HEADER_LICENSED_WITH, Helpers.GetFriendlyLicenseName(pool));
}
if (xenObject is Host host && host.Connection != null && host.Connection.IsConnected && host.Connection.CacheIsPopulated)
{
return string.Format(Messages.MAINWINDOW_HEADER_LICENSED_WITH, Helpers.GetFriendlyLicenseName(host));
}
return string.Empty;
}
private void SetTitleLabelMaxWidth()
{
TitleLabel.MaximumSize = new Size(tableLayoutPanel1.Width - loggedInLabel1.Width - LicenseStatusTitleLabel.Width - 6, TitleLabel.Height);
TitleLabel.MaximumSize = new Size(tableLayoutPanel1.Width - loggedInLabel1.Width - 6, TitleLabel.Height);
}
private void UpdateViewMenu(NavigationPane.NavigationMode mode)
@ -3007,7 +2819,6 @@ namespace XenAdmin
{
if (mode == NavigationPane.NavigationMode.Notifications)
{
LicenseStatusTitleLabel.Text = string.Empty;
TheTabControl.Visible = false;
}
else
@ -3111,11 +2922,6 @@ namespace XenAdmin
History.PopulateForwardDropDown(button);
}
private void LicenseManagerMenuItem_Click(object sender, EventArgs e)
{
licenseManagerLauncher.LaunchIfRequired(false, ConnectionsManager.XenConnections, SelectionManager.Selection);
}
private void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F5)
@ -3392,14 +3198,9 @@ namespace XenAdmin
dialog.ShowDialog(this);
}
private void downloadSourceToolStripMenuItem_Click(object sender, EventArgs e)
private void updatesPage_Load(object sender, EventArgs e)
{
ClientUpdateAlert.DownloadSource(this);
}
private void downloadLatestSourceToolStripMenuItem_Click(object sender, EventArgs e)
{
ClientUpdateAlert.DownloadSource(this);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -51,7 +51,6 @@ namespace XenAdmin.SettingsPanels
{
InitializeComponent();
CPSOptimizationRadioButton.Text = string.Format(CPSOptimizationRadioButton.Text, BrandManager.CompanyNameLegacy);
Text = Messages.ADVANCED_OPTIONS;
m_invalidParamToolTip = new ToolTip
@ -60,7 +59,8 @@ namespace XenAdmin.SettingsPanels
ToolTipIcon = ToolTipIcon.Warning,
ToolTipTitle = Messages.INVALID_PARAMETER
};
this.CPSOptimizationRadioButton.Visible = showCpsOptimisation = !HiddenFeatures.CPSOptimizationHidden;
this.CPSOptimizationRadioButton.Visible = showCpsOptimisation = true;
}
public String SubText

View File

@ -178,13 +178,13 @@
<value>10, 3, 3, 3</value>
</data>
<data name="CPSOptimizationRadioButton.Size" type="System.Drawing.Size, System.Drawing">
<value>156, 17</value>
<value>142, 17</value>
</data>
<data name="CPSOptimizationRadioButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="CPSOptimizationRadioButton.Text" xml:space="preserve">
<value>Optimize for {0} &amp;Virtual Apps</value>
<value>Optimize for &amp;Virtual Apps </value>
</data>
<data name="&gt;&gt;CPSOptimizationRadioButton.Name" xml:space="preserve">
<value>CPSOptimizationRadioButton</value>

View File

@ -1044,12 +1044,6 @@ namespace XenAdmin.TabPages
private void ButtonChangeRoles_Click(object sender, EventArgs e)
{
if (Helpers.FeatureForbidden(_connection, Host.RestrictRBAC))
{
UpsellDialog.ShowUpsellDialog(string.Format(Messages.UPSELL_BLURB_RBAC, BrandManager.ProductBrand), this);
return;
}
// Double check, this method is called from a context menu as well and the state could have changed under it
if (!ButtonChangeRoles.Enabled)
return;

View File

@ -1,108 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Dialogs;
namespace XenAdmin.TabPages
{
public class GeneralTabLicenseStatusStringifier
{
public ILicenseStatus Status { private get; set; }
public GeneralTabLicenseStatusStringifier(ILicenseStatus status)
{
Status = status;
}
public string ExpiryDate
{
get
{
if (Status?.LicensedHost != null && Status.LicenseExpiresIn != new TimeSpan()
&& !LicenseStatus.IsInfinite(Status.LicenseExpiresIn))
{
return HelpersGUI.DateTimeToString(Status.LicensedHost.LicenseExpiryUTC().ToLocalTime(),
Messages.DATEFORMAT_DMY_LONG, true);
}
return Messages.LICENSE_NEVER;
}
}
public string ExpiryStatus
{
get
{
if (Status == null || !Status.Updated)
return Messages.GENERAL_UNKNOWN;
if (Status.ExpiryDate.HasValue)
{
if (Status.CurrentState == LicenseStatus.HostState.Unavailable)
return Messages.LICENSE_EXPIRED_NO_LICENSES_AVAILABLE;
if (Status.CurrentState == LicenseStatus.HostState.Expired)
return Messages.LICENSE_UNLICENSED;
if (Status.CurrentState == LicenseStatus.HostState.Free)
return Helpers.NileOrGreater(Status.LicensedHost) ? Messages.LICENSE_MANAGER_TRIAL_LICENSE : Messages.LICENSE_UNLICENSED;
TimeSpan s = Status.LicenseExpiresExactlyIn;
if (s.TotalMinutes < 2)
return Messages.LICENSE_EXPIRES_ONE_MIN;
if (s.TotalHours < 2)
return string.Format(Messages.LICENSE_EXPIRES_MINUTES, Math.Floor(s.TotalMinutes));
if (s.TotalDays < 2)
return string.Format(Messages.LICENSE_EXPIRES_HOURS, Math.Floor(s.TotalHours));
if (s.TotalDays < 30)
return string.Format(Messages.LICENSE_EXPIRES_DAYS, s.Days);
return Messages.LICENSE_LICENSED;
}
return Messages.GENERAL_UNKNOWN;
}
}
public bool ShowExpiryDate
{
get
{
if (Status != null && Status.CurrentState == LicenseStatus.HostState.Free)
return false;
return true;
}
}
}
}

View File

@ -15,9 +15,6 @@ namespace XenAdmin.TabPages
{
if (disposing && (components != null))
{
if (licenseStatus != null)
licenseStatus.Dispose();
components.Dispose();
}
base.Dispose(disposing);

View File

@ -69,12 +69,8 @@ namespace XenAdmin.TabPages
private readonly CollectionChangeEventHandler VM_guest_metrics_CollectionChangedWithInvoke;
private LicenseStatus licenseStatus;
#endregion
public LicenseManagerLauncher LicenseLauncher { private get; set; }
public GeneralTabPage()
{
InitializeComponent();
@ -101,29 +97,6 @@ namespace XenAdmin.TabPages
public override string HelpID => "TabPageSettings";
private void licenseStatus_ItemUpdated()
{
if (pdSectionLicense == null || licenseStatus == null)
return;
var ss = new GeneralTabLicenseStatusStringifier(licenseStatus);
Program.Invoke(Program.MainWindow, () =>
{
pdSectionLicense.UpdateEntryValueWithKey(FriendlyName("host.license_params-expiry"),
ss.ExpiryDate, ss.ShowExpiryDate);
pdSectionLicense.UpdateEntryValueWithKey(Messages.LICENSE_STATUS, ss.ExpiryStatus, true);
if (xenObject is Pool p)
{
var additionalString = PoolAdditionalLicenseString(p);
pdSectionGeneral.UpdateEntryValueWithKey(
Messages.POOL_LICENSE, Helpers.GetFriendlyLicenseName(p),
true);
}
});
}
private void ScrollToSelectionIfNeeded(PDSection s)
{
if (s.HasNoSelection())
@ -161,26 +134,11 @@ namespace XenAdmin.TabPages
return;
}
if (licenseStatus != null)
{
licenseStatus.ItemUpdated -= licenseStatus_ItemUpdated;
licenseStatus.Dispose();
//set this to null to prevent updates if the object is not a host or pool
licenseStatus = null;
}
UnregisterHandlers();
if (value.Connection != null && value.Connection.IsConnected && (value is Host || value is Pool))
{
licenseStatus = new LicenseStatus(value);
licenseStatus.ItemUpdated += licenseStatus_ItemUpdated;
licenseStatus.BeginUpdate();
}
UnregisterHandlers();
xenObject = value;
RegisterHandlers();
BuildList();
xenObject = value;
RegisterHandlers();
BuildList();
List<PDSection> expandedSections = null;
@ -317,14 +275,14 @@ namespace XenAdmin.TabPages
pbd.PropertyChanged += PropertyChanged;
}
}
else
{
// At the moment we are rebuilding on almost any property changed event.
// As long as we are just clearing and re-adding the rows in the PDSections this seems to be super quick.
// If it gets slower we should update specific boxes for specific property changes.
if (licenseStatus != null && licenseStatus.Updated)
licenseStatus.BeginUpdate();
}
//else
//{
// // At the moment we are rebuilding on almost any property changed event.
// // As long as we are just clearing and re-adding the rows in the PDSections this seems to be super quick.
// // If it gets slower we should update specific boxes for specific property changes.
// if (licenseStatus != null && licenseStatus.Updated)
// licenseStatus.BeginUpdate();
//}
BuildList();
});
@ -404,7 +362,6 @@ namespace XenAdmin.TabPages
GenerateInterfaceBox();
GenerateMemoryBox();
GenerateVersionBox();
GenerateLicenseBox();
GenerateCPUBox();
GenerateHostUpdatesBox();
GenerateBootBox();
@ -596,14 +553,14 @@ namespace XenAdmin.TabPages
if (partApplied.Count > 0)
{
var menuItems = new ToolStripMenuItem[] {new CommandToolStripMenuItem(new InstallNewUpdateCommand(Program.MainWindow), true)};
var menuItems = new ToolStripMenuItem[] { new CommandToolStripMenuItem(new InstallNewUpdateCommand(Program.MainWindow), true) };
partApplied.Sort(StringUtility.NaturalCompare);
pdSectionUpdates.AddEntry(FriendlyName("Pool_patch.partially_applied"), string.Join(Environment.NewLine, partApplied), menuItems);
}
if (partAppliedError.Count > 0)
{
var menuItems = new ToolStripMenuItem[] {new CommandToolStripMenuItem(new InstallNewUpdateCommand(Program.MainWindow), true)};
var menuItems = new ToolStripMenuItem[] { new CommandToolStripMenuItem(new InstallNewUpdateCommand(Program.MainWindow), true) };
partAppliedError.Sort(StringUtility.NaturalCompare);
pdSectionUpdates.AddEntry(string.Format(Messages.STRING_SPACE_STRING,
FriendlyName("Pool_patch.partially_applied"), Messages.UPDATES_GENERAL_TAB_ENFORCE_HOMOGENEITY),
@ -614,11 +571,11 @@ namespace XenAdmin.TabPages
private void GenerateCdnUpdatesBox(Pool pool)
{
var repoNames = (from repoRef in pool.repositories
let repo = pool.Connection.Resolve(repoRef)
where repo != null
let found = RepoDescriptor.AllRepos.FirstOrDefault(rd => rd.MatchesRepository(repo))
where found != null
select found.FriendlyName).ToList();
let repo = pool.Connection.Resolve(repoRef)
where repo != null
let found = RepoDescriptor.AllRepos.FirstOrDefault(rd => rd.MatchesRepository(repo))
where found != null
select found.FriendlyName).ToList();
pdSectionUpdates.AddEntryWithNoteLink(Messages.UPDATES_GENERAL_TAB_REPO,
repoNames.Count == 0 ? Messages.NOT_CONFIGURED : string.Join("\n", repoNames),
@ -681,19 +638,19 @@ namespace XenAdmin.TabPages
// As of Ely we use host.updates_requiring_reboot to generate the list of reboot required messages
// For older versions no change to how messages are generated
var messages = elyOrGreater ? CheckHostUpdatesRequiringReboot(host) : CheckServerUpdates(host);
foreach (var kvp in messages)
pdSectionUpdates.AddEntry(kvp.Key, kvp.Value);
var appliedPatches = string.Join(Environment.NewLine, Helpers.HostAppliedPatchesList(host));
if (!string.IsNullOrEmpty(appliedPatches))
pdSectionUpdates.AddEntry(FriendlyName("Pool_patch.applied"), appliedPatches);
var recommendedPatches = RecommendedPatchesForHost(host);
if (!string.IsNullOrEmpty(recommendedPatches))
pdSectionUpdates.AddEntry(FriendlyName("Pool_patch.required-updates"), recommendedPatches);
@ -787,7 +744,7 @@ namespace XenAdmin.TabPages
bool broken = false;
bool repairable = sr.HasPBDs();
var statusString = Messages.GENERAL_STATE_OK;
if (sr.IsDetached())
{
broken = true;
@ -1050,115 +1007,6 @@ namespace XenAdmin.TabPages
}
}
private void GenerateLicenseBox()
{
if (!(xenObject is Host host))
return;
PDSection s = pdSectionLicense;
if (host.CanShowTrialEditionUpsell())
{
pdSectionLicense.AddEntryWithNoteLink(Messages.WARNING, Messages.TRIAL_EDITION_UPSELLING_MESSAGE,
Messages.LICENSE_MANAGER_BUY_LICENSE_LINK_TEXT, () => Program.OpenURL(InvisibleMessages.LICENSE_BUY_URL), Color.Red);
}
if (host.CssLicenseHasExpired() && !host.IsInPreviewRelease())
{
pdSectionLicense.AddEntryWithNoteLink(Messages.WARNING, Messages.EXPIRED_CSS_UPSELLING_MESSAGE_HOST,
Messages.LICENSE_MANAGER_PURCHASE_SUPPORT_LINK_TEXT, () => Program.OpenURL(InvisibleMessages.CSS_URL), Color.Red);
}
if (host.license_params == null)
return;
Dictionary<string, string> info = new Dictionary<string, string>(host.license_params);
// This field is now suppressed as it has no meaning under the current license scheme, and was never
// enforced anyway.
info.Remove("sockets");
// Remove "expiry" field for "basic" license
if (!string.IsNullOrEmpty(host.edition) && host.edition == "basic")
info.Remove("expiry");
if (info.ContainsKey("expiry"))
{
ToolStripMenuItem editItem = new ToolStripMenuItem(Messages.LAUNCH_LICENSE_MANAGER);
editItem.Click += delegate
{
if (LicenseLauncher != null)
{
LicenseLauncher.Parent = Program.MainWindow;
LicenseLauncher.LaunchIfRequired(false, ConnectionsManager.XenConnections);
}
};
if (licenseStatus != null)
{
var ss = new GeneralTabLicenseStatusStringifier(licenseStatus);
s.AddEntry(Messages.LICENSE_STATUS,
licenseStatus.Updated ? ss.ExpiryStatus : Messages.GENERAL_LICENSE_QUERYING, editItem);
if (ss.ShowExpiryDate)
s.AddEntry(FriendlyName("host.license_params-expiry"),
licenseStatus.Updated ? ss.ExpiryDate : Messages.GENERAL_LICENSE_QUERYING,
editItem);
}
info.Remove("expiry");
}
if (!string.IsNullOrEmpty(host.edition))
{
s.AddEntry(FriendlyName("host.edition"), Helpers.GetFriendlyLicenseName(host));
}
s.AddEntry(Messages.NUMBER_OF_SOCKETS, host.CpuSockets().ToString());
if (host.license_server.ContainsKey("address"))
{
var licenseServerAddress = host.license_server["address"].Trim();
if (licenseServerAddress == "" || licenseServerAddress.ToLower() == "localhost")
s.AddEntry(FriendlyName("host.license_server-address"), host.license_server["address"]);
else
{
void OpenWebConsole()
{
Program.OpenURL(string.Format(Messages.LICENSE_SERVER_WEB_CONSOLE_FORMAT, licenseServerAddress, Host.LicenseServerWebConsolePort));
}
var openUrl = new ToolStripMenuItem(Messages.LICENSE_SERVER_WEB_CONSOLE_GOTO, null,
(sender, e) => OpenWebConsole());
s.AddEntryLink(FriendlyName("host.license_server-address"), host.license_server["address"],
OpenWebConsole, openUrl);
}
}
if (host.license_server.ContainsKey("port"))
{
s.AddEntry(FriendlyName("host.license_server-port"), host.license_server["port"]);
}
foreach (string key in new string[] { "productcode", "serialnumber" })
{
if (info.ContainsKey(key))
{
string row_name = string.Format("host.license_params-{0}", key);
string k = key;
if (host.license_params[k] != string.Empty)
s.AddEntry(FriendlyName(row_name), host.license_params[k]);
info.Remove(key);
}
}
string restrictions = Helpers.GetHostRestrictions(host);
if (restrictions != "")
{
s.AddEntry(Messages.RESTRICTIONS, restrictions);
}
}
private void GenerateVersionBox()
{
if (!(xenObject is Host host) || host.software_version == null)
@ -1185,9 +1033,9 @@ namespace XenAdmin.TabPages
{
//var hotfixEligibilityString = AdditionalVersionString(host);
var versionString = $"{host.ProductBrand()} {host.ProductVersionText()}";
//if (string.IsNullOrEmpty(hotfixEligibilityString))
pdSectionVersion.AddEntry(Messages.SOFTWARE_VERSION_PRODUCT_VERSION, versionString);
pdSectionVersion.AddEntry(Messages.SOFTWARE_VERSION_PRODUCT_VERSION, versionString);
//else
// pdSectionVersion.AddEntry(Messages.SOFTWARE_VERSION_PRODUCT_VERSION,
// string.Format(Messages.MAINWINDOW_CONTEXT_REASON, versionString, hotfixEligibilityString),
@ -1496,11 +1344,6 @@ namespace XenAdmin.TabPages
if (xenObject is Pool p)
{
var additionalString = PoolAdditionalLicenseString(p);
s.AddEntry(Messages.POOL_LICENSE,
additionalString != string.Empty
? string.Format(Messages.MAINWINDOW_CONTEXT_REASON, Helpers.GetFriendlyLicenseName(p), additionalString)
: Helpers.GetFriendlyLicenseName(p));
s.AddEntry(Messages.NUMBER_OF_SOCKETS, p.CpuSockets().ToString());
if (Helpers.CloudOrGreater(p.Connection) && Helpers.XapiEqualOrGreater_1_290_0(p.Connection))
@ -1544,7 +1387,7 @@ namespace XenAdmin.TabPages
//var hotfixEligibilityString = AdditionalVersionString(coordinator);
//if (string.IsNullOrEmpty(hotfixEligibilityString))
s.AddEntry(Messages.SOFTWARE_VERSION_PRODUCT_VERSION, versionString);
s.AddEntry(Messages.SOFTWARE_VERSION_PRODUCT_VERSION, versionString);
//else
// s.AddEntry(Messages.SOFTWARE_VERSION_PRODUCT_VERSION,
// string.Format(Messages.MAINWINDOW_CONTEXT_REASON, versionString, hotfixEligibilityString),
@ -1581,63 +1424,6 @@ namespace XenAdmin.TabPages
s.AddEntry(FriendlyName("host.uuid"), xenObject.Get("uuid") as string);
}
private string PoolAdditionalLicenseString(IXenObject pool)
{
if (licenseStatus == null)
return string.Empty;
switch (licenseStatus.CurrentState)
{
case LicenseStatus.HostState.Expired:
return Messages.LICENSE_EXPIRED;
case LicenseStatus.HostState.Free:
// We don't show "Unlicensed" when the pool is in Trial edition
return Helpers.NileOrGreater(pool?.Connection) ? string.Empty : Messages.LICENSE_UNLICENSED;
default:
return string.Empty;
}
}
//private string AdditionalVersionString(Host host)
//{
// var hotfixEligibility = Updates.HotfixEligibility(host, out var xenServerVersion);
// var unlicensed = host.IsFreeLicenseOrExpired();
// switch (hotfixEligibility)
// {
// // premium
// case hotfix_eligibility.premium when unlicensed && xenServerVersion.HotfixEligibilityPremiumDate != DateTime.MinValue:
// return string.Format(Messages.HOTFIX_ELIGIBILITY_WARNING_FREE, HelpersGUI.DateTimeToString(xenServerVersion.HotfixEligibilityPremiumDate.ToLocalTime(), Messages.DATEFORMAT_DMY, true));
// case hotfix_eligibility.premium when unlicensed:
// return Messages.HOTFIX_ELIGIBILITY_WARNING_FREE_NO_DATE;
// // cu
// case hotfix_eligibility.cu when unlicensed && xenServerVersion.HotfixEligibilityPremiumDate != DateTime.MinValue:
// return string.Format(Messages.HOTFIX_ELIGIBILITY_WARNING_FREE, HelpersGUI.DateTimeToString(xenServerVersion.HotfixEligibilityPremiumDate.ToLocalTime(), Messages.DATEFORMAT_DMY, true));
// case hotfix_eligibility.cu when unlicensed:
// return Messages.HOTFIX_ELIGIBILITY_WARNING_FREE_NO_DATE;
// case hotfix_eligibility.cu when xenServerVersion.HotfixEligibilityNoneDate != DateTime.MinValue:
// return string.Format(Messages.HOTFIX_ELIGIBILITY_WARNING_CU, HelpersGUI.DateTimeToString(xenServerVersion.HotfixEligibilityNoneDate.ToLocalTime(), Messages.DATEFORMAT_DMY, true));
// case hotfix_eligibility.cu:
// return Messages.HOTFIX_ELIGIBILITY_WARNING_CU_NO_DATE;
// // none
// case hotfix_eligibility.none when unlicensed && xenServerVersion.EolDate != DateTime.MinValue:
// return string.Format(Messages.HOTFIX_ELIGIBILITY_WARNING_EOL_FREE, HelpersGUI.DateTimeToString(xenServerVersion.EolDate.ToLocalTime(), Messages.DATEFORMAT_DMY, true));
// case hotfix_eligibility.none when xenServerVersion.EolDate != DateTime.MinValue:
// return string.Format(Messages.HOTFIX_ELIGIBILITY_WARNING_EOL, HelpersGUI.DateTimeToString(xenServerVersion.EolDate.ToLocalTime(), Messages.DATEFORMAT_DMY, true));
// case hotfix_eligibility.none when unlicensed:
// return Messages.HOTFIX_ELIGIBILITY_WARNING_EOL_FREE_NO_DATE;
// case hotfix_eligibility.none:
// return Messages.HOTFIX_ELIGIBILITY_WARNING_EOL_NO_DATE;
// // default
// default:
// return string.Empty;
// }
//}
private static void GenerateVirtualisationStatusForGeneralBox(PDSection s, VM vm)
{
if (vm != null && vm.Connection != null)
@ -1670,8 +1456,7 @@ namespace XenAdmin.TabPages
}
//Row 3 : vendor device - Windows Update
if (!HiddenFeatures.WindowsUpdateHidden)
sb.Append(vm.has_vendor_device ? Messages.VIRTUALIZATION_STATE_VM_RECEIVING_UPDATES : Messages.VIRTUALIZATION_STATE_VM_NOT_RECEIVING_UPDATES);
sb.Append(vm.has_vendor_device ? Messages.VIRTUALIZATION_STATE_VM_RECEIVING_UPDATES : Messages.VIRTUALIZATION_STATE_VM_NOT_RECEIVING_UPDATES);
// displaying Row1 - Row3
s.AddEntry(FriendlyName("VM.VirtualizationState"), sb.ToString());
@ -2073,7 +1858,7 @@ namespace XenAdmin.TabPages
{
var update = host.Connection.Resolve(updateRef);
if (update != null)
warnings.Add(CreateWarningRow(host, update));
warnings.Add(CreateWarningRow(host, update));
}
// For Toolstack restart, legacy code has to be used to determine this - pool_patches are still populated for backward compatibility

View File

@ -527,7 +527,7 @@ namespace XenAdmin.TabPages
else
{
informationLabel.Text = reason;
tableLayoutPanel1.Visible = !HiddenFeatures.LinkLabelHidden;
tableLayoutPanel1.Visible = true;
}
}

View File

@ -340,11 +340,6 @@ namespace XenAdmin.TabPages
DataPlotNav.RefreshXRange(false);
}
private void ShowUpsell()
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_PERFORMANCE, this);
}
private void MoveGraphUp()
{
if (XenObject == null)
@ -437,26 +432,17 @@ namespace XenAdmin.TabPages
private void LastYearZoom()
{
if (FeatureForbidden)
ShowUpsell();
else
DataPlotNav.ZoomToRange(TimeSpan.Zero, TimeSpan.FromDays(366) - TimeSpan.FromSeconds(1));
DataPlotNav.ZoomToRange(TimeSpan.Zero, TimeSpan.FromDays(366) - TimeSpan.FromSeconds(1));
}
private void LastMonthZoom()
{
if (FeatureForbidden)
ShowUpsell();
else
DataPlotNav.ZoomToRange(TimeSpan.Zero, TimeSpan.FromDays(30) - TimeSpan.FromSeconds(1));
DataPlotNav.ZoomToRange(TimeSpan.Zero, TimeSpan.FromDays(30) - TimeSpan.FromSeconds(1));
}
private void LastWeekZoom()
{
if (FeatureForbidden)
ShowUpsell();
else
DataPlotNav.ZoomToRange(TimeSpan.Zero, TimeSpan.FromDays(7) - TimeSpan.FromSeconds(1));
DataPlotNav.ZoomToRange(TimeSpan.Zero, TimeSpan.FromDays(7) - TimeSpan.FromSeconds(1));
}
private void LastDayZoom()

View File

@ -1,175 +0,0 @@
namespace XenAdmin.TabPages
{
partial class PvsPage
{
/// <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 Component 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(PvsPage));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.dataGridViewVms = new XenAdmin.Controls.DataGridViewEx.DataGridViewEx();
this.columnVM = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnCachingEnabled = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnPvsSite = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ColumnStatus = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.label2 = new System.Windows.Forms.Label();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.enableButton = new XenAdmin.Commands.CommandButton();
this.disableButton = new XenAdmin.Commands.CommandButton();
this.ConfigureButton = new System.Windows.Forms.Button();
this.pageContainerPanel.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridViewVms)).BeginInit();
this.tableLayoutPanel2.SuspendLayout();
this.SuspendLayout();
//
// pageContainerPanel
//
this.pageContainerPanel.Controls.Add(this.tableLayoutPanel1);
resources.ApplyResources(this.pageContainerPanel, "pageContainerPanel");
//
// tableLayoutPanel1
//
resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1");
this.tableLayoutPanel1.Controls.Add(this.dataGridViewVms, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.label2, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 3);
this.tableLayoutPanel1.Controls.Add(this.ConfigureButton, 0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
//
// dataGridViewVms
//
this.dataGridViewVms.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
this.dataGridViewVms.BackgroundColor = System.Drawing.SystemColors.Window;
this.dataGridViewVms.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None;
this.dataGridViewVms.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.dataGridViewVms.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.columnVM,
this.ColumnCachingEnabled,
this.ColumnPvsSite,
this.ColumnStatus});
resources.ApplyResources(this.dataGridViewVms, "dataGridViewVms");
this.dataGridViewVms.MultiSelect = true;
this.dataGridViewVms.Name = "dataGridViewVms";
this.dataGridViewVms.ReadOnly = true;
//
// columnVM
//
this.columnVM.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.columnVM.DefaultCellStyle = dataGridViewCellStyle1;
resources.ApplyResources(this.columnVM, "columnVM");
this.columnVM.Name = "columnVM";
this.columnVM.ReadOnly = true;
//
// ColumnCachingEnabled
//
this.ColumnCachingEnabled.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
resources.ApplyResources(this.ColumnCachingEnabled, "ColumnCachingEnabled");
this.ColumnCachingEnabled.Name = "ColumnCachingEnabled";
this.ColumnCachingEnabled.ReadOnly = true;
//
// ColumnPvsSite
//
resources.ApplyResources(this.ColumnPvsSite, "ColumnPvsSite");
this.ColumnPvsSite.Name = "ColumnPvsSite";
this.ColumnPvsSite.ReadOnly = true;
//
// ColumnStatus
//
this.ColumnStatus.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.ColumnHeader;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.TopLeft;
this.ColumnStatus.DefaultCellStyle = dataGridViewCellStyle2;
this.ColumnStatus.FillWeight = 30F;
resources.ApplyResources(this.ColumnStatus, "ColumnStatus");
this.ColumnStatus.Name = "ColumnStatus";
this.ColumnStatus.ReadOnly = true;
//
// label2
//
resources.ApplyResources(this.label2, "label2");
this.label2.Name = "label2";
//
// tableLayoutPanel2
//
resources.ApplyResources(this.tableLayoutPanel2, "tableLayoutPanel2");
this.tableLayoutPanel2.Controls.Add(this.enableButton, 0, 0);
this.tableLayoutPanel2.Controls.Add(this.disableButton, 1, 0);
this.tableLayoutPanel2.Name = "tableLayoutPanel2";
//
// enableButton
//
resources.ApplyResources(this.enableButton, "enableButton");
this.enableButton.Name = "enableButton";
this.enableButton.UseVisualStyleBackColor = true;
//
// disableButton
//
resources.ApplyResources(this.disableButton, "disableButton");
this.disableButton.Name = "disableButton";
this.disableButton.UseVisualStyleBackColor = true;
//
// ConfigureButton
//
resources.ApplyResources(this.ConfigureButton, "ConfigureButton");
this.ConfigureButton.Name = "ConfigureButton";
this.ConfigureButton.UseVisualStyleBackColor = true;
this.ConfigureButton.Click += new System.EventHandler(this.ConfigureButton_Click);
//
// PvsPage
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.Name = "PvsPage";
this.pageContainerPanel.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridViewVms)).EndInit();
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.Label label2;
private Controls.DataGridViewEx.DataGridViewEx dataGridViewVms;
private XenAdmin.Commands.CommandButton disableButton;
private XenAdmin.Commands.CommandButton enableButton;
private System.Windows.Forms.Button ConfigureButton;
private System.Windows.Forms.DataGridViewTextBoxColumn columnVM;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnCachingEnabled;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnPvsSite;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnStatus;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
}
}

View File

@ -1,470 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.Windows.Forms;
using XenAdmin.Network;
using XenAdmin.Dialogs;
using XenAPI;
using XenAdmin.Commands;
using XenAdmin.Core;
namespace XenAdmin.TabPages
{
public partial class PvsPage : BaseTabPage
{
private IXenConnection connection;
private SelectionManager enableSelectionManager;
private SelectionManager disableSelectionManager;
private DataGridViewVms_DefaultSort vmDefaultSort;
private readonly CollectionChangeEventHandler PvsProxy_CollectionChangedWithInvoke;
public PvsPage()
{
InitializeComponent();
enableButton.Command = new EnablePvsReadCachingCommand();
disableButton.Command = new DisablePvsReadCachingCommand();
enableSelectionManager = new SelectionManager();
disableSelectionManager = new SelectionManager();
vmDefaultSort = new DataGridViewVms_DefaultSort();
PvsProxy_CollectionChangedWithInvoke = Program.ProgramInvokeHandler(PvsProxyCollectionChanged);
base.Text = Messages.PVS_TAB_TITLE;
}
public override string HelpID => "TabPagePvs";
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public IXenConnection Connection
{
get
{
return connection;
}
set
{
UnregisterHandlers();
connection = value;
if (connection != null)
{
connection.Cache.RegisterCollectionChanged<PVS_proxy>(PvsProxy_CollectionChangedWithInvoke);
connection.Cache.RegisterCollectionChanged<VM>(PvsProxy_CollectionChangedWithInvoke);
}
LoadVMs();
}
}
#region VMs
private static bool VmShouldBeVisible(VM vm)
{
if (XenAdminConfigManager.Provider.ObjectIsHidden(vm.opaque_ref))
return false;
return vm.IsRealVm() && vm.Show(Properties.Settings.Default.ShowHiddenVMs) && !vm.IsBeingCreated;
}
private static bool VmIsJustAdded(VM vm)
{
return vm.is_a_template && vm.name_label.StartsWith(Helpers.GuiTempObjectPrefix);
}
private void LoadVMs()
{
Program.AssertOnEventThread();
if (!Visible)
return;
try
{
dataGridViewVms.SuspendLayout();
var previousSelection = GetSelectedVMs();
UnregisterVmEventHandlers();
dataGridViewVms.SortCompare += dataGridViewVms_SortCompare;
dataGridViewVms.Rows.Clear();
enableSelectionManager.BindTo(enableButton, Program.MainWindow);
disableSelectionManager.BindTo(disableButton, Program.MainWindow);
//clear selection
enableSelectionManager.SetSelection(new SelectedItemCollection());
disableSelectionManager.SetSelection(new SelectedItemCollection());
foreach (var vm in Connection.Cache.VMs)
{
// Add all real VMs and templates that begin with __gui__ (because this may be a new VM)
var addVm = vm.IsRealVm() || VmIsJustAdded(vm) || vm.IsBeingCreated;
if (!addVm)
continue;
var show = VmShouldBeVisible(vm);
dataGridViewVms.Rows.Add(NewVmRow(vm, show));
}
SortVmTable();
if (dataGridViewVms.Rows.Count > 0)
{
dataGridViewVms.SelectionChanged += VmSelectionChanged;
UnselectAllVMs(); // Component defaults the first row to selected
if (previousSelection.Any())
{
foreach (var row in dataGridViewVms.Rows.Cast<DataGridViewRow>())
{
if (previousSelection.Contains((VM)row.Tag))
{
row.Selected = true;
}
}
}
else
{
dataGridViewVms.Rows[0].Selected = true;
}
}
}
finally
{
dataGridViewVms.ResumeLayout();
}
}
private void UnselectAllVMs()
{
foreach (var row in dataGridViewVms.SelectedRows.Cast<DataGridViewRow>())
{
row.Selected = false;
}
}
private IList<VM> GetSelectedVMs()
{
return dataGridViewVms.SelectedRows.Cast<DataGridViewRow>().Select(row => (VM)row.Tag).ToList();
}
private void VmSelectionChanged(object sender, EventArgs e)
{
var selectedVMs = GetSelectedVMs().Select(vm => new SelectedItem(vm));
enableSelectionManager.SetSelection(selectedVMs);
disableSelectionManager.SetSelection(selectedVMs);
}
private DataGridViewRow NewVmRow(VM vm, bool showRow)
{
System.Diagnostics.Trace.Assert(vm != null);
var pvsProxy = vm.PvsProxy();
var vmCell = new DataGridViewTextBoxCell();
var cacheEnabledCell = new DataGridViewTextBoxCell();
var pvsSiteCell = new DataGridViewTextBoxCell();
var statusCell = new DataGridViewTextBoxCell();
var newRow = new DataGridViewRow { Tag = vm };
newRow.Cells.AddRange(vmCell, cacheEnabledCell, pvsSiteCell, statusCell);
UpdateRow(newRow, vm, pvsProxy, showRow);
RegisterVmEventHandlers(vm, pvsProxy);
return newRow;
}
private void UpdateRow(DataGridViewRow row, VM vm, PVS_proxy pvsProxy, bool showRow=true)
{
PVS_site pvsSite = pvsProxy == null ? null : Connection.Resolve(pvsProxy.site);
row.Cells[0].Value = vm.Name();
row.Cells[1].Value = pvsProxy == null ? Messages.NO : Messages.YES;
row.Cells[2].Value = pvsProxy == null || pvsSite == null ? Messages.NO_VALUE : pvsSite.NameWithWarning();
row.Cells[3].Value = pvsProxy == null ? Messages.NO_VALUE : pvs_proxy_status_extensions.ToFriendlyString(pvsProxy.status);
row.Visible = showRow;
}
private void RegisterVmEventHandlers(VM vm, PVS_proxy pvsProxy)
{
vm.PropertyChanged -= VmPropertyChanged;
vm.PropertyChanged += VmPropertyChanged;
if (pvsProxy == null)
return;
pvsProxy.PropertyChanged -= PvsProxyPropertyChanged;
pvsProxy.PropertyChanged += PvsProxyPropertyChanged;
var pvsSite = Connection.Resolve(pvsProxy.site);
if (pvsSite == null)
return;
pvsSite.PropertyChanged -= PvsSitePropertyChanged;
pvsSite.PropertyChanged += PvsSitePropertyChanged;
}
private void UnregisterVmEventHandlers()
{
dataGridViewVms.SelectionChanged -= VmSelectionChanged;
dataGridViewVms.SortCompare -= dataGridViewVms_SortCompare;
foreach (DataGridViewRow row in dataGridViewVms.Rows)
{
var vm = row.Tag as VM;
System.Diagnostics.Trace.Assert(vm != null);
vm.PropertyChanged -= VmPropertyChanged;
var pvsProxy = vm.PvsProxy();
if (pvsProxy != null)
{
pvsProxy.PropertyChanged -= PvsProxyPropertyChanged;
var pvsSite = Connection.Resolve(pvsProxy.site);
if (pvsSite != null)
pvsSite.PropertyChanged -= PvsSitePropertyChanged;
}
}
}
private void UnregisterHandlers()
{
if (connection == null)
return;
connection.Cache.DeregisterCollectionChanged<PVS_proxy>(PvsProxy_CollectionChangedWithInvoke);
connection.Cache.DeregisterCollectionChanged<VM>(PvsProxy_CollectionChangedWithInvoke);
}
public override void PageHidden()
{
UnregisterHandlers();
}
void dataGridViewVms_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
e.Handled = false;
if (!e.Column.Equals(columnVM))
{
// All columns in this table except VM name are likely to contain a lot of duplicates
// so always use VM as the tiebreaker for consistency
var cellValue1 = e.CellValue1.ToString();
var cellValue2 = e.CellValue2.ToString();
if (cellValue1 != cellValue2)
{
e.SortResult = cellValue1.CompareTo(cellValue2);
e.Handled = true;
return;
}
}
// If we get here, either sorting by VM name column, or using it as tie breaker
// In order to sort by name, we actually use the built-in VM sort.
// This ensures we use the correct name sorting, and gives a consistent tie-breaker.
VM vm1 = (VM)dataGridViewVms.Rows[e.RowIndex1].Tag;
VM vm2 = (VM)dataGridViewVms.Rows[e.RowIndex2].Tag;
e.SortResult = vm1.CompareTo(vm2);
e.Handled = true;
}
#endregion
private void PvsProxyCollectionChanged(object sender, CollectionChangeEventArgs e)
{
LoadVMs();
}
private void SortVmTable()
{
var sortedColumn = dataGridViewVms.SortedColumn;
var sortDirection = ListSortDirection.Ascending;
if (dataGridViewVms.SortOrder.Equals(SortOrder.Descending))
sortDirection = ListSortDirection.Descending;
if (sortedColumn != null)
{
dataGridViewVms.Sort(sortedColumn, sortDirection);
}
else
{
dataGridViewVms.Sort(vmDefaultSort);
}
}
private void VmPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName != "IsBeingCreated" && e.PropertyName != "name_label")
return;
if (e.PropertyName.Equals("IsBeingCreated"))
{
var senderAsVm = sender as VM;
if (senderAsVm == null || senderAsVm.IsBeingCreated)
{
return;
}
Program.Invoke(this, () =>
{
foreach (DataGridViewRow row in dataGridViewVms.Rows)
{
var vm = row.Tag as VM;
if (vm != null && vm.Equals(sender))
{
var wasHidden = !row.Visible;
dataGridViewVms.SuspendLayout();
if (VmShouldBeVisible(vm))
{
row.Visible = true;
if (wasHidden)
SortVmTable(); // This appears as an add to the user, so retain table sorting
}
dataGridViewVms.ResumeLayout();
break;
}
}
});
return;
}
Program.Invoke(this, () =>
{
foreach (DataGridViewRow row in dataGridViewVms.Rows)
{
var vm = row.Tag as VM;
if (vm != null && vm.Equals(sender))
{
row.Cells[columnVM.Name].Value = vm.Name();
break;
}
}
});
}
private void PvsProxyPropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName != "status" && e.PropertyName != "site")
return;
Program.Invoke(this, () =>
{
var pvsProxy = sender as PVS_proxy;
foreach (DataGridViewRow row in dataGridViewVms.Rows)
{
var vm = row.Tag as VM;
if (vm != null)
{
var pvsProxyVm = pvsProxy.VM();
if (vm.Equals(pvsProxyVm))
{
UpdateRow(row, pvsProxyVm, pvsProxy);
break;
}
}
}
});
}
private void PvsSitePropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName != "name_label" && e.PropertyName != "cache_storage")
return;
Program.Invoke(this, () =>
{
var pvsSite = sender as PVS_site;
foreach (DataGridViewRow row in dataGridViewVms.Rows)
{
var vm = row.Tag as VM;
if (vm == null)
continue;
var pvsProxy = vm.PvsProxy();
if (pvsProxy != null && pvsProxy.site != null && pvsProxy.site.opaque_ref == pvsSite.opaque_ref)
{
UpdateRow(row, vm, pvsProxy);
}
}
});
}
private void ConfigureButton_Click(object sender, EventArgs e)
{
using (var dialog = new PvsCacheConfigurationDialog(connection))
dialog.ShowDialog(this);
}
}
class DataGridViewVms_DefaultSort : System.Collections.IComparer
{
public int Compare(object first, object second)
{
// Default sort: Sort by whether caching is enabled (yes before no), using VM name (asc) as tiebreaker
DataGridViewRow row1 = (DataGridViewRow)first;
DataGridViewRow row2 = (DataGridViewRow)second;
int cachingEnabled1 = row1.Cells[1].Value.ToString().Equals(Messages.YES) ? 0 : 1;
int cachingEnabled2 = row2.Cells[1].Value.ToString().Equals(Messages.YES) ? 0 : 1;
if (cachingEnabled1 != cachingEnabled2)
{
return cachingEnabled1.CompareTo(cachingEnabled2);
}
else
{
// VM name as tiebreaker
var vm1 = row1.Tag as VM;
var vm2 = row2.Tag as VM;
return vm1.CompareTo(vm2);
}
}
}
}

View File

@ -1,453 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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.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>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<metadata name="columnVM.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="columnVM.HeaderText" xml:space="preserve">
<value>仮想マシン</value>
</data>
<data name="columnVM.MinimumWidth" type="System.Int32, mscorlib">
<value>120</value>
</data>
<metadata name="ColumnCachingEnabled.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnCachingEnabled.HeaderText" xml:space="preserve">
<value>PVS アクセラレータが有効</value>
</data>
<data name="ColumnCachingEnabled.Width" type="System.Int32, mscorlib">
<value>148</value>
</data>
<metadata name="ColumnPvsSite.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnPvsSite.HeaderText" xml:space="preserve">
<value>PVS サイト</value>
</data>
<metadata name="ColumnStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnStatus.HeaderText" xml:space="preserve">
<value>PVS アクセラレータの状態</value>
</data>
<data name="ColumnStatus.MinimumWidth" type="System.Int32, mscorlib">
<value>120</value>
</data>
<data name="ColumnStatus.Width" type="System.Int32, mscorlib">
<value>137</value>
</data>
<data name="dataGridViewVms.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="dataGridViewVms.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="dataGridViewVms.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 62</value>
</data>
<data name="dataGridViewVms.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>900, 500</value>
</data>
<data name="dataGridViewVms.Size" type="System.Drawing.Size, System.Drawing">
<value>854, 279</value>
</data>
<data name="dataGridViewVms.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Name" xml:space="preserve">
<value>dataGridViewVms</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Type" xml:space="preserve">
<value>XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;dataGridViewVms.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 11.25pt</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 39</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 23</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>仮想マシン</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.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;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="enableButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="enableButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="enableButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="enableButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="enableButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="enableButton.Text" xml:space="preserve">
<value>PVS アクセラレータを有効にする...</value>
</data>
<data name="&gt;&gt;enableButton.Name" xml:space="preserve">
<value>enableButton</value>
</data>
<data name="&gt;&gt;enableButton.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandButton, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;enableButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;enableButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="disableButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="disableButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="disableButton.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 3</value>
</data>
<data name="disableButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="disableButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="disableButton.Text" xml:space="preserve">
<value>PVS アクセラレータを無効にする(&amp;D)</value>
</data>
<data name="&gt;&gt;disableButton.Name" xml:space="preserve">
<value>disableButton</value>
</data>
<data name="&gt;&gt;disableButton.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandButton, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;disableButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;disableButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 352</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>855, 29</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel2.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="enableButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="disableButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Percent,100" />&lt;Rows Styles="AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="ConfigureButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ConfigureButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ConfigureButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="ConfigureButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="ConfigureButton.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="ConfigureButton.Text" xml:space="preserve">
<value>PVS アクセラレータの構成(&amp;C)...</value>
</data>
<data name="&gt;&gt;ConfigureButton.Name" xml:space="preserve">
<value>ConfigureButton</value>
</data>
<data name="&gt;&gt;ConfigureButton.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;ConfigureButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;ConfigureButton.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 10</value>
</data>
<data name="tableLayoutPanel1.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>905, 602</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>855, 381</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>pageContainerPanel</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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="dataGridViewVms" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="tableLayoutPanel2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="ConfigureButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,100,Absolute,20" />&lt;Rows Styles="AutoSize,20,AutoSize,0,Percent,100,AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="pageContainerPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 78</value>
</data>
<data name="pageContainerPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>875, 401</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Name" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pageContainerPanel.ZOrder" xml:space="preserve">
<value>0</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.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>875, 479</value>
</data>
<data name="&gt;&gt;columnVM.Name" xml:space="preserve">
<value>columnVM</value>
</data>
<data name="&gt;&gt;columnVM.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnCachingEnabled.Name" xml:space="preserve">
<value>ColumnCachingEnabled</value>
</data>
<data name="&gt;&gt;ColumnCachingEnabled.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnPvsSite.Name" xml:space="preserve">
<value>ColumnPvsSite</value>
</data>
<data name="&gt;&gt;ColumnPvsSite.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnStatus.Name" xml:space="preserve">
<value>ColumnStatus</value>
</data>
<data name="&gt;&gt;ColumnStatus.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.TabPages.BaseTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,453 +0,0 @@
<?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.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>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<metadata name="columnVM.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="columnVM.HeaderText" xml:space="preserve">
<value>Virtual machine</value>
</data>
<data name="columnVM.MinimumWidth" type="System.Int32, mscorlib">
<value>120</value>
</data>
<metadata name="ColumnCachingEnabled.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnCachingEnabled.HeaderText" xml:space="preserve">
<value>PVS-Accelerator enabled</value>
</data>
<data name="ColumnCachingEnabled.Width" type="System.Int32, mscorlib">
<value>162</value>
</data>
<metadata name="ColumnPvsSite.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnPvsSite.HeaderText" xml:space="preserve">
<value>PVS Site</value>
</data>
<metadata name="ColumnStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnStatus.HeaderText" xml:space="preserve">
<value>PVS-Accelerator status</value>
</data>
<data name="ColumnStatus.MinimumWidth" type="System.Int32, mscorlib">
<value>120</value>
</data>
<data name="ColumnStatus.Width" type="System.Int32, mscorlib">
<value>151</value>
</data>
<data name="dataGridViewVms.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="dataGridViewVms.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="dataGridViewVms.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 62</value>
</data>
<data name="dataGridViewVms.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>900, 500</value>
</data>
<data name="dataGridViewVms.Size" type="System.Drawing.Size, System.Drawing">
<value>849, 287</value>
</data>
<data name="dataGridViewVms.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Name" xml:space="preserve">
<value>dataGridViewVms</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Type" xml:space="preserve">
<value>XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;dataGridViewVms.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 11.25pt</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 39</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>3, 10, 3, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 20</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>Virtual Machines</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.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;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="enableButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="enableButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="enableButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="enableButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="enableButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="enableButton.Text" xml:space="preserve">
<value>Enable PVS-Accelerator...</value>
</data>
<data name="&gt;&gt;enableButton.Name" xml:space="preserve">
<value>enableButton</value>
</data>
<data name="&gt;&gt;enableButton.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandButton, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;enableButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;enableButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="disableButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="disableButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="disableButton.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 3</value>
</data>
<data name="disableButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="disableButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="disableButton.Text" xml:space="preserve">
<value>&amp;Disable PVS-Accelerator</value>
</data>
<data name="&gt;&gt;disableButton.Name" xml:space="preserve">
<value>disableButton</value>
</data>
<data name="&gt;&gt;disableButton.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandButton, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;disableButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;disableButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 352</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>855, 29</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</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="enableButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="disableButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,100" /&gt;&lt;Rows Styles="AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="ConfigureButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ConfigureButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ConfigureButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="ConfigureButton.Size" type="System.Drawing.Size, System.Drawing">
<value>180, 23</value>
</data>
<data name="ConfigureButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="ConfigureButton.Text" xml:space="preserve">
<value>&amp;Configure PVS-Accelerator...</value>
</data>
<data name="&gt;&gt;ConfigureButton.Name" xml:space="preserve">
<value>ConfigureButton</value>
</data>
<data name="&gt;&gt;ConfigureButton.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;ConfigureButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;ConfigureButton.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 10</value>
</data>
<data name="tableLayoutPanel1.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>905, 602</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>855, 381</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>pageContainerPanel</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="dataGridViewVms" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="tableLayoutPanel2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="ConfigureButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="Percent,100,Absolute,20" /&gt;&lt;Rows Styles="AutoSize,20,AutoSize,0,Percent,100,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data>
<data name="pageContainerPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 78</value>
</data>
<data name="pageContainerPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>875, 401</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Name" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pageContainerPanel.ZOrder" xml:space="preserve">
<value>0</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.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>875, 479</value>
</data>
<data name="&gt;&gt;columnVM.Name" xml:space="preserve">
<value>columnVM</value>
</data>
<data name="&gt;&gt;columnVM.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnCachingEnabled.Name" xml:space="preserve">
<value>ColumnCachingEnabled</value>
</data>
<data name="&gt;&gt;ColumnCachingEnabled.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnPvsSite.Name" xml:space="preserve">
<value>ColumnPvsSite</value>
</data>
<data name="&gt;&gt;ColumnPvsSite.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnStatus.Name" xml:space="preserve">
<value>ColumnStatus</value>
</data>
<data name="&gt;&gt;ColumnStatus.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.TabPages.BaseTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,453 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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.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>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<metadata name="columnVM.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="columnVM.HeaderText" xml:space="preserve">
<value>虚拟机</value>
</data>
<data name="columnVM.MinimumWidth" type="System.Int32, mscorlib">
<value>120</value>
</data>
<metadata name="ColumnCachingEnabled.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnCachingEnabled.HeaderText" xml:space="preserve">
<value>已启用 PVS 加速器</value>
</data>
<data name="ColumnCachingEnabled.Width" type="System.Int32, mscorlib">
<value>148</value>
</data>
<metadata name="ColumnPvsSite.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnPvsSite.HeaderText" xml:space="preserve">
<value>PVS 站点</value>
</data>
<metadata name="ColumnStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="ColumnStatus.HeaderText" xml:space="preserve">
<value>PVS 加速器状态</value>
</data>
<data name="ColumnStatus.MinimumWidth" type="System.Int32, mscorlib">
<value>120</value>
</data>
<data name="ColumnStatus.Width" type="System.Int32, mscorlib">
<value>137</value>
</data>
<data name="dataGridViewVms.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
<data name="dataGridViewVms.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 9pt</value>
</data>
<data name="dataGridViewVms.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 62</value>
</data>
<data name="dataGridViewVms.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>900, 500</value>
</data>
<data name="dataGridViewVms.Size" type="System.Drawing.Size, System.Drawing">
<value>854, 279</value>
</data>
<data name="dataGridViewVms.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Name" xml:space="preserve">
<value>dataGridViewVms</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Type" xml:space="preserve">
<value>XenAdmin.Controls.DataGridViewEx.DataGridViewEx, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;dataGridViewVms.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;dataGridViewVms.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label2.Font" type="System.Drawing.Font, System.Drawing">
<value>Segoe UI, 11.25pt</value>
</data>
<data name="label2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 39</value>
</data>
<data name="label2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 10, 0, 0</value>
</data>
<data name="label2.Size" type="System.Drawing.Size, System.Drawing">
<value>118, 23</value>
</data>
<data name="label2.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="label2.Text" xml:space="preserve">
<value>虚拟机</value>
</data>
<data name="&gt;&gt;label2.Name" xml:space="preserve">
<value>label2</value>
</data>
<data name="&gt;&gt;label2.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;label2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;label2.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="tableLayoutPanel2.AutoSizeMode" type="System.Windows.Forms.AutoSizeMode, System.Windows.Forms">
<value>GrowAndShrink</value>
</data>
<data name="tableLayoutPanel2.ColumnCount" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="enableButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="enableButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="enableButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="enableButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="enableButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="enableButton.Text" xml:space="preserve">
<value>启用 PVS 加速器...</value>
</data>
<data name="&gt;&gt;enableButton.Name" xml:space="preserve">
<value>enableButton</value>
</data>
<data name="&gt;&gt;enableButton.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandButton, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;enableButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;enableButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="disableButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="disableButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="disableButton.Location" type="System.Drawing.Point, System.Drawing">
<value>179, 3</value>
</data>
<data name="disableButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="disableButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="disableButton.Text" xml:space="preserve">
<value>禁用 PVS 加速器(&amp;D)</value>
</data>
<data name="&gt;&gt;disableButton.Name" xml:space="preserve">
<value>disableButton</value>
</data>
<data name="&gt;&gt;disableButton.Type" xml:space="preserve">
<value>XenAdmin.Commands.CommandButton, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;disableButton.Parent" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;disableButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel2.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 352</value>
</data>
<data name="tableLayoutPanel2.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>0, 0, 0, 0</value>
</data>
<data name="tableLayoutPanel2.RowCount" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="tableLayoutPanel2.Size" type="System.Drawing.Size, System.Drawing">
<value>855, 29</value>
</data>
<data name="tableLayoutPanel2.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.Name" xml:space="preserve">
<value>tableLayoutPanel2</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.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;tableLayoutPanel2.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;tableLayoutPanel2.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="tableLayoutPanel2.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="enableButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="disableButton" Row="0" RowSpan="1" Column="1" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="AutoSize,0,Percent,100" />&lt;Rows Styles="AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="ConfigureButton.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ConfigureButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="ConfigureButton.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="ConfigureButton.Size" type="System.Drawing.Size, System.Drawing">
<value>170, 23</value>
</data>
<data name="ConfigureButton.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="ConfigureButton.Text" xml:space="preserve">
<value>配置 PVS 加速器(&amp;C)...</value>
</data>
<data name="&gt;&gt;ConfigureButton.Name" xml:space="preserve">
<value>ConfigureButton</value>
</data>
<data name="&gt;&gt;ConfigureButton.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;ConfigureButton.Parent" xml:space="preserve">
<value>tableLayoutPanel1</value>
</data>
<data name="&gt;&gt;ConfigureButton.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>10, 10</value>
</data>
<data name="tableLayoutPanel1.MaximumSize" type="System.Drawing.Size, System.Drawing">
<value>905, 602</value>
</data>
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>855, 381</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>pageContainerPanel</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"?>&lt;TableLayoutSettings>&lt;Controls>&lt;Control Name="dataGridViewVms" Row="2" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="label2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="tableLayoutPanel2" Row="3" RowSpan="1" Column="0" ColumnSpan="1" />&lt;Control Name="ConfigureButton" Row="0" RowSpan="1" Column="0" ColumnSpan="1" />&lt;/Controls>&lt;Columns Styles="Percent,100,Absolute,20" />&lt;Rows Styles="AutoSize,20,AutoSize,0,Percent,100,AutoSize,0" />&lt;/TableLayoutSettings></value>
</data>
<data name="pageContainerPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 78</value>
</data>
<data name="pageContainerPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>875, 401</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Name" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pageContainerPanel.ZOrder" xml:space="preserve">
<value>0</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.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 8, 8, 8</value>
</data>
<data name="$this.Size" type="System.Drawing.Size, System.Drawing">
<value>875, 479</value>
</data>
<data name="&gt;&gt;columnVM.Name" xml:space="preserve">
<value>columnVM</value>
</data>
<data name="&gt;&gt;columnVM.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnCachingEnabled.Name" xml:space="preserve">
<value>ColumnCachingEnabled</value>
</data>
<data name="&gt;&gt;ColumnCachingEnabled.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnPvsSite.Name" xml:space="preserve">
<value>ColumnPvsSite</value>
</data>
<data name="&gt;&gt;ColumnPvsSite.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;ColumnStatus.Name" xml:space="preserve">
<value>ColumnStatus</value>
</data>
<data name="&gt;&gt;ColumnStatus.Type" xml:space="preserve">
<value>System.Windows.Forms.DataGridViewTextBoxColumn, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>PvsPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.TabPages.BaseTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -252,7 +252,7 @@ namespace XenAdmin.TabPages
private void UnregisterHandlers()
{
if (m_VM == null)
if (m_VM == null)
return;
m_VM.Connection.Cache.DeregisterBatchCollectionChanged<VM>(VM_BatchCollectionChanged);
m_VM.PropertyChanged -= snapshot_PropertyChanged;
@ -681,7 +681,7 @@ namespace XenAdmin.TabPages
if (customFields.Count >= 2)
{
tableLayoutPanelSimpleSelection.RowStyles[6].Height = 30;
customFieldTitle2.Text = String.Format("{0}:",customFields[1].Definition.Name.ToString());
customFieldTitle2.Text = String.Format("{0}:", customFields[1].Definition.Name.ToString());
customFieldContent2.Text = customFields[1].Value.ToString();
}
@ -703,7 +703,7 @@ namespace XenAdmin.TabPages
var descr = snapshot.Description();
descriptionLabel.Text = string.IsNullOrEmpty(descr) ? Messages.NONE : descr;
toolTipDescriptionLabel.SetToolTip(descriptionLabel,
toolTipDescriptionLabel.SetToolTip(descriptionLabel,
descriptionLabel.Height == descriptionLabel.MaximumSize.Height ? descriptionLabel.Text : "");
BackgroundWorker backgroundWorker = new BackgroundWorker();
@ -718,7 +718,7 @@ namespace XenAdmin.TabPages
folderLabel.Text = folder.name_label;
else
folderLabel.Text = Messages.NONE;
toolTipFolderLabel.SetToolTip(folderLabel,
toolTipFolderLabel.SetToolTip(folderLabel,
folderLabel.Height == folderLabel.MaximumSize.Height ? folderLabel.Text : "");
propertiesGroupBox.Tag = snapshot;
propertiesButton.Enabled = true;
@ -1087,10 +1087,10 @@ namespace XenAdmin.TabPages
VM snap = (VM)item.Tag;
if (snap != null && snap.is_a_snapshot)
{
if(!(snap.is_snapshot_from_vmpp || snap.is_vmss_snapshot) || toolStripMenuItemScheduledSnapshots.Checked)
if (!(snap.is_snapshot_from_vmpp || snap.is_vmss_snapshot) || toolStripMenuItemScheduledSnapshots.Checked)
snapshots.Add(snap);
}
}
return snapshots;
}
@ -1503,15 +1503,8 @@ namespace XenAdmin.TabPages
private void linkLabelVMPPInfo_Click(object sender, LinkLabelLinkClickedEventArgs e)
{
if (Helpers.FeatureForbidden(VM.Connection, Host.RestrictVMSnapshotSchedule))
{
UpsellDialog.ShowUpsellDialog(Messages.UPSELL_BLURB_VMSS, this);
}
else
{
var command = new VMGroupCommand<VMSS>(Program.MainWindow, VM);
command.Run();
}
var command = new VMGroupCommand<VMSS>(Program.MainWindow, VM);
command.Run();
}
private void snapshotTreeView_Leave(object sender, EventArgs e)

View File

@ -1,73 +0,0 @@
namespace XenAdmin.TabPages
{
partial class UpsellTabPage
{
/// <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 Component 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(UpsellTabPage));
this.TitleLabel = new System.Windows.Forms.Label();
this.upsellPage1 = new XenAdmin.Controls.UpsellPage();
this.pageContainerPanel.SuspendLayout();
this.SuspendLayout();
//
// pageContainerPanel
//
this.pageContainerPanel.Controls.Add(this.upsellPage1);
resources.ApplyResources(this.pageContainerPanel, "pageContainerPanel");
//
// TitleLabel
//
resources.ApplyResources(this.TitleLabel, "TitleLabel");
this.TitleLabel.AutoEllipsis = true;
this.TitleLabel.ForeColor = System.Drawing.Color.White;
this.TitleLabel.Name = "TitleLabel";
//
// upsellPage1
//
resources.ApplyResources(this.upsellPage1, "upsellPage1");
this.upsellPage1.Name = "upsellPage1";
//
// UpsellTabPage
//
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.Color.Transparent;
this.DoubleBuffered = true;
this.Name = "UpsellTabPage";
this.pageContainerPanel.ResumeLayout(false);
this.pageContainerPanel.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private XenAdmin.Controls.UpsellPage upsellPage1;
private System.Windows.Forms.Label TitleLabel;
}
}

View File

@ -1,87 +0,0 @@
/* Copyright (c) Cloud Software Group, Inc.
*
* 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.ComponentModel;
using XenAdmin.Core;
namespace XenAdmin.TabPages
{
public partial class UpsellTabPage : BaseTabPage
{
protected UpsellTabPage()
{
InitializeComponent();
}
protected string BlurbText
{
set => upsellPage1.BlurbText = value;
}
protected string Title
{
set => Text = value;
}
}
public class ADUpsellPage : UpsellTabPage
{
public ADUpsellPage()
{
Title = Messages.ACTIVE_DIRECTORY_TAB_TITLE;
BlurbText = string.Format(Messages.UPSELL_BLURB_AD, BrandManager.ProductBrand);
}
public override string HelpID => "TabPageADUpsell";
}
public class HAUpsellPage : UpsellTabPage
{
public HAUpsellPage()
{
Title = Messages.HIGH_AVAILABILITY;
BlurbText = Messages.UPSELL_BLURB_HA;
}
public override string HelpID => "TabPageHAUpsell";
}
public class WLBUpsellPage : UpsellTabPage
{
public WLBUpsellPage()
{
Title = Messages.WORKLOAD_BALANCING;
BlurbText = Messages.UPSELL_BLURB_WLB;
}
public override string HelpID => "TabPageWLBUpsell";
}
}

View File

@ -1,210 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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=2.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>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="upsellPage1.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"/>
<data name="upsellPage1.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 13</value>
</data>
<data name="upsellPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>496, 79</value>
</data>
<data name="upsellPage1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;upsellPage1.Name" xml:space="preserve">
<value>upsellPage1</value>
</data>
<data name="&gt;&gt;upsellPage1.Type" xml:space="preserve">
<value>XenAdmin.Controls.UpsellPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;upsellPage1.Parent" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;upsellPage1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pageContainerPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>510, 60</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Name" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pageContainerPanel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 11.25pt</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>0, 0</value>
</data>
<data name="TitleLabel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 0, 0, 0</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>601, 36</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>41</value>
</data>
<data name="TitleLabel.Text" xml:space="preserve">
<value>高可用性</value>
</data>
<data name="TitleLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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.Size" type="System.Drawing.Size, System.Drawing">
<value>510, 97</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellTabPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.TabPages.BaseTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,210 +0,0 @@
<?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=2.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>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="upsellPage1.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" />
<data name="upsellPage1.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 13</value>
</data>
<data name="upsellPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>496, 79</value>
</data>
<data name="upsellPage1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;upsellPage1.Name" xml:space="preserve">
<value>upsellPage1</value>
</data>
<data name="&gt;&gt;upsellPage1.Type" xml:space="preserve">
<value>XenAdmin.Controls.UpsellPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;upsellPage1.Parent" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;upsellPage1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pageContainerPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>510, 60</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Name" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pageContainerPanel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 11.25pt</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>0, 0</value>
</data>
<data name="TitleLabel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 0, 0, 0</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>601, 36</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>41</value>
</data>
<data name="TitleLabel.Text" xml:space="preserve">
<value>High Availability</value>
</data>
<data name="TitleLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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.Size" type="System.Drawing.Size, System.Drawing">
<value>510, 97</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellTabPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.TabPages.BaseTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View File

@ -1,210 +0,0 @@
<?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:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element msdata:IsDataSet="true" name="root">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="value" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<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 minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
<xsd:element minOccurs="0" msdata:Ordinal="2" name="comment" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute msdata:Ordinal="1" name="name" type="xsd:string" use="required"/>
<xsd:attribute msdata:Ordinal="3" name="type" type="xsd:string"/>
<xsd:attribute msdata:Ordinal="4" name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" msdata:Ordinal="1" name="value" type="xsd:string"/>
</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=2.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>
</resheader>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="upsellPage1.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"/>
<data name="upsellPage1.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 13</value>
</data>
<data name="upsellPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>496, 79</value>
</data>
<data name="upsellPage1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;upsellPage1.Name" xml:space="preserve">
<value>upsellPage1</value>
</data>
<data name="&gt;&gt;upsellPage1.Type" xml:space="preserve">
<value>XenAdmin.Controls.UpsellPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;upsellPage1.Parent" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;upsellPage1.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pageContainerPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>510, 60</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Name" xml:space="preserve">
<value>pageContainerPanel</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pageContainerPanel.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;pageContainerPanel.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<data name="TitleLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="TitleLabel.Font" type="System.Drawing.Font, System.Drawing">
<value>Microsoft Sans Serif, 11.25pt</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>0, 0</value>
</data>
<data name="TitleLabel.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
<value>8, 0, 0, 0</value>
</data>
<data name="TitleLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>601, 36</value>
</data>
<data name="TitleLabel.TabIndex" type="System.Int32, mscorlib">
<value>41</value>
</data>
<data name="TitleLabel.Text" xml:space="preserve">
<value>高可用性</value>
</data>
<data name="TitleLabel.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.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.Size" type="System.Drawing.Size, System.Drawing">
<value>510, 97</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>UpsellTabPage</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>XenAdmin.TabPages.BaseTabPage, XenCenterMain, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

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