[mapguide-commits] r6134 - in trunk/Tools/Maestro:
Maestro.AddIn.Local Maestro.Base/Commands
Maestro.Base/Services/DragDropHandlers Maestro.Packaging
Maestro.Packaging/Properties OSGeo.MapGuide.MaestroAPI.Native
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Sep 15 14:02:38 EDT 2011
Author: jng
Date: 2011-09-15 11:02:38 -0700 (Thu, 15 Sep 2011)
New Revision: 6134
Added:
trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.Designer.cs
trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.cs
trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.resx
Modified:
trunk/Tools/Maestro/Maestro.AddIn.Local/ACE.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/GEOS.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MapGuideDesktopUnmanagedApi.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgDesktop.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgFoundation.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgGeometry.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgGwsCommon.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgGwsQueryEngine.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgGwsResource.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgMdfModel.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgMdfParser.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgPlatformBase.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgRenderers.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/MgStylization.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/OSGeo.MapGuide.Desktop.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/OSGeo.MapGuide.Viewer.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/gd.dll
trunk/Tools/Maestro/Maestro.AddIn.Local/xerces-c_3_1mg.dll
trunk/Tools/Maestro/Maestro.Base/Commands/LoadPackageCommand.cs
trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs
trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj
trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs
trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs
trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.designer.cs
trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.resx
trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.Designer.cs
trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.resx
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native/
Log:
This submission updates the mg-desktop binaries (revision 68a19b6c5d) and implements non-transactional package loading (#1623)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/ACE.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/GEOS.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MapGuideDesktopUnmanagedApi.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgDesktop.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgFoundation.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgGeometry.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgGwsCommon.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgGwsQueryEngine.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgGwsResource.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgMdfModel.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgMdfParser.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgPlatformBase.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgRenderers.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/MgStylization.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/OSGeo.MapGuide.Desktop.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/OSGeo.MapGuide.Viewer.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/gd.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.AddIn.Local/xerces-c_3_1mg.dll
===================================================================
(Binary files differ)
Modified: trunk/Tools/Maestro/Maestro.Base/Commands/LoadPackageCommand.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Commands/LoadPackageCommand.cs 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Base/Commands/LoadPackageCommand.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -24,6 +24,7 @@
using Maestro.Base.Services;
using Maestro.Shared.UI;
using Maestro.Packaging;
+using System.Windows.Forms;
namespace Maestro.Base.Commands
{
@@ -41,11 +42,21 @@
open.Filter = Properties.Resources.Filter_Mgp_Files;
if (open.ShowDialog(wb) == System.Windows.Forms.DialogResult.OK)
{
- var res = PackageProgress.UploadPackage(
- wb,
- conn,
- open.FileName);
-
+ var optDiag = new PackageUploadOptionDialog();
+ optDiag.ShowDialog();
+ DialogResult res;
+ if (optDiag.Method == PackageUploadMethod.Transactional)
+ {
+ res = PackageProgress.UploadPackage(wb,
+ conn,
+ open.FileName);
+ }
+ else
+ {
+ res = PackageProgress.UploadPackageNonTransactional(wb,
+ conn,
+ open.FileName);
+ }
if (res == System.Windows.Forms.DialogResult.OK)
{
exp.RefreshModel(conn.DisplayName);
Modified: trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Base/Services/DragDropHandlers/PackageFileHandler.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -25,6 +25,7 @@
using Maestro.Packaging;
using Maestro.Shared.UI;
using OSGeo.MapGuide.MaestroAPI;
+using System.Windows.Forms;
namespace Maestro.Base.Services.DragDropHandlers
{
@@ -51,11 +52,21 @@
var wb = Workbench.Instance;
var exp = wb.ActiveSiteExplorer;
- var res = PackageProgress.UploadPackage(
- wb,
- conn,
- file);
-
+ var optDiag = new PackageUploadOptionDialog();
+ optDiag.ShowDialog();
+ DialogResult res;
+ if (optDiag.Method == PackageUploadMethod.Transactional)
+ {
+ res = PackageProgress.UploadPackage(wb,
+ conn,
+ file);
+ }
+ else
+ {
+ res = PackageProgress.UploadPackageNonTransactional(wb,
+ conn,
+ file);
+ }
if (res == System.Windows.Forms.DialogResult.OK)
{
exp.RefreshModel(conn.DisplayName);
Modified: trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Packaging/Maestro.Packaging.csproj 2011-09-15 18:02:38 UTC (rev 6134)
@@ -39,6 +39,7 @@
<HintPath>..\Thirdparty\SharpZipLib\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="System" />
+ <Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
@@ -58,6 +59,12 @@
<Compile Include="PackageProgress.designer.cs">
<DependentUpon>PackageProgress.cs</DependentUpon>
</Compile>
+ <Compile Include="PackageUploadOptionDialog.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="PackageUploadOptionDialog.Designer.cs">
+ <DependentUpon>PackageUploadOptionDialog.cs</DependentUpon>
+ </Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
@@ -71,6 +78,9 @@
<EmbeddedResource Include="PackageProgress.resx">
<DependentUpon>PackageProgress.cs</DependentUpon>
</EmbeddedResource>
+ <EmbeddedResource Include="PackageUploadOptionDialog.resx">
+ <DependentUpon>PackageUploadOptionDialog.cs</DependentUpon>
+ </EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
Modified: trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageBuilder.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -23,6 +23,11 @@
using OSGeo.MapGuide.ObjectModels.Common;
using OSGeo.MapGuide.MaestroAPI;
using OSGeo.MapGuide.MaestroAPI.Resource;
+using OSGeo.MapGuide.MaestroAPI.Services;
+using ICSharpCode.SharpZipLib.Zip;
+using System.Xml;
+using System.Collections.Specialized;
+using System.IO;
namespace Maestro.Packaging
{
@@ -58,7 +63,15 @@
/// <summary>
/// Extracting filenames from package
/// </summary>
- ListingFiles
+ ListingFiles,
+ /// <summary>
+ /// Setting resource content
+ /// </summary>
+ SetResource,
+ /// <summary>
+ /// Setting resource data
+ /// </summary>
+ SetResourceData
}
/// <summary>
@@ -87,7 +100,7 @@
/// <param name="maxValue">The max value, meaning that when value equals maxValue, progress is equal to 100%</param>
/// <param name="value">The current item being progressed</param>
/// <param name="resourceId">The name of the resource being processed, if any</param>
- public delegate void ProgressDelegate(ProgressType type, string resourceId, int maxValue, int value);
+ public delegate void ProgressDelegate(ProgressType type, string resourceId, int maxValue, double value);
/// <summary>
/// A class to create MapGuide data packages
@@ -136,6 +149,172 @@
Progress(ProgressType.Uploading, sourceFile, 100, 100);
}
+ /// <summary>
+ /// Uploads a package to the server in a non-transactional fashion. Resources which fail to load are added to the specified list of
+ /// failed resources. The upload is non-transactional in the sense that it can partially fail. Failed operations are logged.
+ /// </summary>
+ /// <param name="sourceFile">The source package file</param>
+ /// <param name="skipResourceIds">The list of resource ids in the package to skip</param>
+ /// <param name="failedResourceIds">The list of resources ids that failed to load</param>
+ public void UploadPackageNonTransactional(string sourceFile, ICollection<PackageOperation> skipResourceIds, ICollection<PackageOperation> failedResourceIds)
+ {
+ Dictionary<PackageOperation, PackageOperation> skipOps = new Dictionary<PackageOperation, PackageOperation>();
+ if (skipResourceIds != null)
+ {
+ foreach (var op in skipResourceIds)
+ {
+ skipOps[op] = op;
+ }
+ }
+
+ ProgressDelegate progress = this.Progress;
+ if (progress == null)
+ progress = (type, file, a, b) => { };
+
+ double step = 0.0;
+ progress(ProgressType.ListingFiles, sourceFile, 100, step);
+
+ //Process overview:
+ //
+ // 1. Extract the package to a temp directory
+ // 2. Read the package manifest
+ // 3. For each resource id in the manifest, if it is in the list of resource ids to skip
+ // then skip it. Otherwise process the directive that uses this id.
+
+ ZipFile package = new ZipFile(sourceFile);
+ ZipEntry manifestEntry = package.GetEntry("MgResourcePackageManifest.xml");
+ XmlDocument doc = new XmlDocument();
+ using (var s = package.GetInputStream(manifestEntry))
+ {
+ doc.Load(s);
+ }
+ XmlNodeList opNodes = doc.GetElementsByTagName("Operation");
+ double unit = (100.0 / (double)opNodes.Count);
+ foreach (XmlNode opNode in opNodes)
+ {
+ step += unit;
+ string name = opNode["Name"].InnerText.ToUpper();
+
+ PackageOperation op = ParseOperation(opNode);
+ //TODO: A DELETERESOURCE would cause a null operation. Should we bother to support it?
+ if (op == null)
+ continue;
+
+ //Is a skipped operation?
+ if (skipOps.ContainsKey(op))
+ {
+ System.Diagnostics.Trace.TraceInformation("Skipping " + op.OperationName + " on " + op.ResourceId);
+ continue;
+ }
+
+ switch (name)
+ {
+ case "SETRESOURCE":
+ {
+ SetResourcePackageOperation sop = (SetResourcePackageOperation)op;
+ ZipEntry contentEntry = package.GetEntry(sop.Content);
+ ZipEntry headerEntry = null;
+
+ if (!string.IsNullOrEmpty(sop.Header))
+ headerEntry = package.GetEntry(sop.Header);
+
+ try
+ {
+ using (var s = package.GetInputStream(contentEntry))
+ {
+ m_connection.ResourceService.SetResourceXmlData(op.ResourceId, s);
+ progress(ProgressType.SetResource, op.ResourceId, 100, step);
+ }
+
+ if (headerEntry != null)
+ {
+ using (var s = package.GetInputStream(headerEntry))
+ {
+ using (var sr = new StreamReader(s))
+ {
+ ResourceDocumentHeaderType header = ResourceDocumentHeaderType.Deserialize(sr.ReadToEnd());
+ m_connection.ResourceService.SetResourceHeader(op.ResourceId, header);
+ progress(ProgressType.SetResource, op.ResourceId, 100, step);
+ }
+ }
+ }
+ }
+ catch (Exception)
+ {
+ //We don't really care about the header. We consider failure if the
+ //content upload did not succeed
+ if (!m_connection.ResourceService.ResourceExists(op.ResourceId))
+ failedResourceIds.Add(op);
+ }
+ }
+ break;
+ case "SETRESOURCEDATA":
+ {
+ SetResourceDataPackageOperation sop = (SetResourceDataPackageOperation)op;
+ ZipEntry dataEntry = package.GetEntry(sop.Data);
+
+ try
+ {
+ using (var s = package.GetInputStream(dataEntry))
+ {
+ m_connection.ResourceService.SetResourceData(sop.ResourceId, sop.DataName, sop.DataType, s);
+ progress(ProgressType.SetResourceData, sop.ResourceId, 100, step);
+ }
+ }
+ catch (Exception)
+ {
+ var resData = m_connection.ResourceService.EnumerateResourceData(sop.ResourceId);
+ bool found = false;
+
+ foreach (var data in resData.ResourceData)
+ {
+ if (data.Name == sop.DataName)
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if (!found)
+ failedResourceIds.Add(sop);
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ private static PackageOperation ParseOperation(XmlNode opNode)
+ {
+ PackageOperation op = null;
+ NameValueCollection p = new NameValueCollection();
+ foreach (XmlNode paramNode in opNode["Parameters"].ChildNodes)
+ {
+ p[paramNode["Name"].InnerText] = paramNode["Value"].InnerText;
+ }
+ string resourceId = p["RESOURCEID"];
+ switch (opNode["Name"].InnerText)
+ {
+ case "SETRESOURCE":
+ {
+ op = new SetResourcePackageOperation(resourceId, p["CONTENT"], p["HEADER"]);
+ }
+ break;
+ case "SETRESOURCEDATA":
+ {
+ ResourceDataType rdt;
+ try
+ {
+ rdt = (ResourceDataType)Enum.Parse(typeof(ResourceDataType), p["DATATYPE"], true);
+ }
+ catch { rdt = ResourceDataType.File; }
+ op = new SetResourceDataPackageOperation(resourceId, p["DATA"], p["DATANAME"], rdt);
+ }
+ break;
+ }
+ return op;
+ }
+
private void ProgressCallback_Upload(long copied, long remain, long total)
{
if (Progress != null)
@@ -930,4 +1109,141 @@
return resourceList;
}
}
+
+ public abstract class PackageOperation
+ {
+ public string ResourceId { get; set; }
+
+ public string OperationName { get; set; }
+
+ protected PackageOperation(string resId) { this.ResourceId = resId; }
+ }
+
+ public class SetResourcePackageOperation : PackageOperation
+ {
+ public SetResourcePackageOperation(string resId, string content, string header)
+ : base(resId)
+ {
+ this.OperationName = "SETRESOURCE";
+ this.Content = content;
+ this.Header = header;
+ }
+
+ public string Content { get; set; }
+
+ public string Header { get; set; }
+
+ /// <summary>
+ /// Determines whether the specified <see cref="System.Object"/> is equal to this instance.
+ /// </summary>
+ /// <param name="obj">The <see cref="System.Object"/> to compare with this instance.</param>
+ /// <returns>
+ /// <c>true</c> if the specified <see cref="System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+ /// </returns>
+ /// <exception cref="T:System.NullReferenceException">
+ /// The <paramref name="obj"/> parameter is null.
+ /// </exception>
+ public override bool Equals(object obj)
+ {
+ if (obj == null)
+ return false;
+
+ if (!typeof(SetResourcePackageOperation).IsAssignableFrom(obj.GetType()))
+ return false;
+
+ SetResourcePackageOperation vi = (SetResourcePackageOperation)obj;
+ return string.Compare(this.Content, vi.Content) == 0 &&
+ string.Compare(this.Header, vi.Header) == 0 &&
+ string.Compare(this.OperationName, vi.OperationName) == 0 &&
+ string.Compare(this.ResourceId, vi.ResourceId) == 0;
+ }
+
+ /// <summary>
+ /// Returns a hash code for this instance.
+ /// </summary>
+ /// <returns>
+ /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+ /// </returns>
+ public override int GetHashCode()
+ {
+ //http://stackoverflow.com/questions/263400/what-is-the-best-algorithm-for-an-overridden-systemobjectgethashcode
+ unchecked
+ {
+ int hash = 17;
+ hash = hash * 23 + this.Content.GetHashCode();
+ if (this.Header != null)
+ hash = hash * 23 + this.Header.GetHashCode();
+ hash = hash * 23 + this.OperationName.GetHashCode();
+ hash = hash * 23 + this.ResourceId.GetHashCode();
+
+ return hash;
+ }
+ }
+ }
+
+ public class SetResourceDataPackageOperation : PackageOperation
+ {
+ public SetResourceDataPackageOperation(string resId, string data, string dataName, ResourceDataType dataType)
+ : base(resId)
+ {
+ this.OperationName = "SETRESOURCEDATA";
+ this.Data = data;
+ this.DataName = dataName;
+ this.DataType = dataType;
+ }
+
+ public string Data { get; set; }
+
+ public string DataName { get; set; }
+
+ public ResourceDataType DataType { get; set; }
+
+ /// <summary>
+ /// Determines whether the specified <see cref="System.Object"/> is equal to this instance.
+ /// </summary>
+ /// <param name="obj">The <see cref="System.Object"/> to compare with this instance.</param>
+ /// <returns>
+ /// <c>true</c> if the specified <see cref="System.Object"/> is equal to this instance; otherwise, <c>false</c>.
+ /// </returns>
+ /// <exception cref="T:System.NullReferenceException">
+ /// The <paramref name="obj"/> parameter is null.
+ /// </exception>
+ public override bool Equals(object obj)
+ {
+ if (obj == null)
+ return false;
+
+ if (!typeof(SetResourceDataPackageOperation).IsAssignableFrom(obj.GetType()))
+ return false;
+
+ SetResourceDataPackageOperation vi = (SetResourceDataPackageOperation)obj;
+ return this.Data.Equals(vi.Data) &&
+ this.DataName.Equals(vi.DataName) &&
+ this.OperationName.Equals(vi.OperationName) &&
+ this.ResourceId.Equals(vi.ResourceId) &&
+ this.DataType == vi.DataType;
+ }
+
+ /// <summary>
+ /// Returns a hash code for this instance.
+ /// </summary>
+ /// <returns>
+ /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+ /// </returns>
+ public override int GetHashCode()
+ {
+ //http://stackoverflow.com/questions/263400/what-is-the-best-algorithm-for-an-overridden-systemobjectgethashcode
+ unchecked
+ {
+ int hash = 17;
+ hash = hash * 23 + this.Data.GetHashCode();
+ hash = hash * 23 + this.DataName.GetHashCode();
+ hash = hash * 23 + this.OperationName.GetHashCode();
+ hash = hash * 23 + this.ResourceId.GetHashCode();
+ hash = hash * 23 + this.DataType.GetHashCode();
+
+ return hash;
+ }
+ }
+ }
}
Modified: trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -25,6 +25,7 @@
using System.Windows.Forms;
using OSGeo.MapGuide.MaestroAPI.Services;
using OSGeo.MapGuide.MaestroAPI;
+using Maestro.Shared.UI;
namespace Maestro.Packaging
{
@@ -79,7 +80,12 @@
if (dlg.ShowDialog(owner) == DialogResult.OK)
{
- return UploadPackage(owner, con, dlg.FileName);
+ var optDiag = new PackageUploadOptionDialog();
+ optDiag.ShowDialog();
+ if (optDiag.Method == PackageUploadMethod.Transactional)
+ return UploadPackage(owner, con, dlg.FileName);
+ else
+ return UploadPackageNonTransactional(owner, con, dlg.FileName);
}
else
return DialogResult.Cancel;
@@ -124,6 +130,24 @@
}
/// <summary>
+ /// Uploads a package file to the server in a non-transactional fashion
+ /// </summary>
+ /// <param name="owner">The owner form</param>
+ /// <param name="connection">The connection used to upload the package</param>
+ /// <param name="packageFile">The package file to upload</param>
+ /// <returns>A DialogResult object that indicates the result of the operation</returns>
+ public static DialogResult UploadPackageNonTransactional(Form owner, IServerConnection connection, string packageFile)
+ {
+ PackageProgress pkgp = new PackageProgress();
+ pkgp.Text = Properties.Resources.TitleUploading;
+ pkgp.m_invokeArgs = new object[] { packageFile, new List<PackageOperation>(), new List<PackageOperation>() };
+ pkgp.m_invokeObj = new PackageBuilder(connection);
+ pkgp.m_invokeMethod = pkgp.m_invokeObj.GetType().GetMethod("UploadPackageNonTransactional");
+
+ return pkgp.ShowDialog(owner);
+ }
+
+ /// <summary>
/// Rebuilds a package
/// </summary>
/// <param name="owner">The owner form</param>
@@ -190,8 +214,8 @@
}
}
- private delegate void SetCurrentProgressDelegate(ProgressType type, string resource, int total, int pg);
- private void SetCurrentProgress(ProgressType type, string resource, int total, int pg)
+ private delegate void SetCurrentProgressDelegate(ProgressType type, string resource, int total, double pg);
+ private void SetCurrentProgress(ProgressType type, string resource, int total, double pg)
{
if (this.InvokeRequired)
this.Invoke(new SetCurrentProgressDelegate(SetCurrentProgress), new object[] { type, resource, total, pg });
@@ -209,7 +233,7 @@
this.TotalProgress.Minimum = 0;
double tick = 100 / BUILD_STAGES.Length;
- double lv = (tick * largePg) + (tick * ((double)pg / total));
+ double lv = (tick * largePg) + (tick * (pg / total));
this.TotalProgress.Value = (int)Math.Max(Math.Min((int)lv, this.TotalProgress.Maximum), this.TotalProgress.Minimum);
}
@@ -246,7 +270,20 @@
{
OperationLabel.Text = resource;
}
-
+ else if (type == ProgressType.SetResource)
+ {
+ CurrentProgress.Style = ProgressBarStyle.Continuous;
+ CurrentProgress.Maximum = 100;
+ CurrentProgress.Value = Convert.ToInt32(Math.Min(100.0, pg));
+ OperationLabel.Text = string.Format(Properties.Resources.ProgressSetResource, resource, pg);
+ }
+ else if (type == ProgressType.SetResourceData)
+ {
+ CurrentProgress.Style = ProgressBarStyle.Continuous;
+ CurrentProgress.Maximum = 100;
+ CurrentProgress.Value = Convert.ToInt32(Math.Min(100.0, pg));
+ OperationLabel.Text = string.Format(Properties.Resources.ProgressSetResourceData, resource, pg);
+ }
}
}
@@ -292,7 +329,9 @@
return;
}
else if (e.Error != null)
- throw e.Error;
+ {
+ ErrorDialog.Show(e.Error);
+ }
m_invokeResult = e.Result;
this.DialogResult = DialogResult.OK;
Modified: trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.designer.cs 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.designer.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -85,8 +85,8 @@
//
// PackageProgress
//
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
resources.ApplyResources(this, "$this");
- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.Controls.Add(this.CancelBtn);
this.Controls.Add(this.OperationLabel);
this.Controls.Add(this.label3);
Modified: trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.resx 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageProgress.resx 2011-09-15 18:02:38 UTC (rev 6134)
@@ -119,7 +119,7 @@
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="CurrentProgress.Location" type="System.Drawing.Point, System.Drawing">
- <value>88, 40</value>
+ <value>88, 87</value>
</data>
<data name="CurrentProgress.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 23</value>
@@ -141,7 +141,7 @@
<value>6</value>
</data>
<data name="TotalProgress.Location" type="System.Drawing.Point, System.Drawing">
- <value>88, 72</value>
+ <value>88, 119</value>
</data>
<data name="TotalProgress.Size" type="System.Drawing.Size, System.Drawing">
<value>384, 23</value>
@@ -165,7 +165,7 @@
<value>True</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
- <value>16, 40</value>
+ <value>16, 87</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 13</value>
@@ -192,7 +192,7 @@
<value>True</value>
</data>
<data name="TotalLabel.Location" type="System.Drawing.Point, System.Drawing">
- <value>16, 72</value>
+ <value>16, 119</value>
</data>
<data name="TotalLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 13</value>
@@ -250,7 +250,7 @@
<value>88, 8</value>
</data>
<data name="OperationLabel.Size" type="System.Drawing.Size, System.Drawing">
- <value>384, 13</value>
+ <value>384, 76</value>
</data>
<data name="OperationLabel.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@@ -274,7 +274,7 @@
<value>Bottom</value>
</data>
<data name="CancelBtn.Location" type="System.Drawing.Point, System.Drawing">
- <value>184, 112</value>
+ <value>184, 148</value>
</data>
<data name="CancelBtn.Size" type="System.Drawing.Size, System.Drawing">
<value>112, 24</value>
@@ -303,12 +303,12 @@
<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>6, 13</value>
- </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
- <value>489, 146</value>
+ <value>489, 182</value>
</data>
+ <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
+ <value>CenterParent</value>
+ </data>
<data name="$this.Text" xml:space="preserve">
<value>Building package</value>
</data>
Added: trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.Designer.cs (rev 0)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.Designer.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -0,0 +1,78 @@
+namespace Maestro.Packaging
+{
+ partial class PackageUploadOptionDialog
+ {
+ /// <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(PackageUploadOptionDialog));
+ this.btnOK = new System.Windows.Forms.Button();
+ this.rdTransactional = new System.Windows.Forms.RadioButton();
+ this.rdNonTransactional = new System.Windows.Forms.RadioButton();
+ this.SuspendLayout();
+ //
+ // btnOK
+ //
+ resources.ApplyResources(this.btnOK, "btnOK");
+ this.btnOK.Name = "btnOK";
+ this.btnOK.UseVisualStyleBackColor = true;
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ //
+ // rdTransactional
+ //
+ resources.ApplyResources(this.rdTransactional, "rdTransactional");
+ this.rdTransactional.Checked = true;
+ this.rdTransactional.Name = "rdTransactional";
+ this.rdTransactional.TabStop = true;
+ this.rdTransactional.UseVisualStyleBackColor = true;
+ //
+ // rdNonTransactional
+ //
+ resources.ApplyResources(this.rdNonTransactional, "rdNonTransactional");
+ this.rdNonTransactional.Name = "rdNonTransactional";
+ this.rdNonTransactional.UseVisualStyleBackColor = true;
+ //
+ // PackageUploadOptionDialog
+ //
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
+ resources.ApplyResources(this, "$this");
+ this.ControlBox = false;
+ this.Controls.Add(this.rdNonTransactional);
+ this.Controls.Add(this.rdTransactional);
+ this.Controls.Add(this.btnOK);
+ this.Name = "PackageUploadOptionDialog";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button btnOK;
+ private System.Windows.Forms.RadioButton rdTransactional;
+ private System.Windows.Forms.RadioButton rdNonTransactional;
+ }
+}
\ No newline at end of file
Added: trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.cs (rev 0)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -0,0 +1,76 @@
+#region Disclaimer / License
+// Copyright (C) 2011, Jackie Ng
+// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Maestro.Packaging
+{
+ /// <summary>
+ /// The method of package uploading
+ /// </summary>
+ public enum PackageUploadMethod
+ {
+ /// <summary>
+ /// The offical method. Uses the ApplyResourcePackage API. This will wholly succeed or fail. This may
+ /// have issues with certain packages due to size and encrypted content.
+ /// </summary>
+ Transactional,
+ /// <summary>
+ /// This method can partially succeed and/or partially fail. Failed operations are logged. This method
+ /// can have its progress measured and is generally unaffected by size and encryption issues. This method
+ /// is recommended for large packages or for packages that fail to load in transactional mode.
+ /// </summary>
+ NonTransactional
+ }
+
+ public partial class PackageUploadOptionDialog : Form
+ {
+ public PackageUploadOptionDialog()
+ {
+ InitializeComponent();
+ }
+
+ /// <summary>
+ /// Gets the selected upload method
+ /// </summary>
+ public PackageUploadMethod Method
+ {
+ get
+ {
+ PackageUploadMethod method = PackageUploadMethod.Transactional;
+ if (rdTransactional.Checked)
+ method = PackageUploadMethod.Transactional;
+ else if (rdNonTransactional.Checked)
+ method = PackageUploadMethod.NonTransactional;
+ return method;
+ }
+ }
+
+ private void btnOK_Click(object sender, EventArgs e)
+ {
+ this.DialogResult = DialogResult.OK;
+ }
+ }
+}
Added: trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.resx (rev 0)
+++ trunk/Tools/Maestro/Maestro.Packaging/PackageUploadOptionDialog.resx 2011-09-15 18:02:38 UTC (rev 6134)
@@ -0,0 +1,222 @@
+<?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="btnOK.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+ <value>Bottom, Right</value>
+ </data>
+ <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+ <data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
+ <value>362, 72</value>
+ </data>
+ <data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
+ <value>75, 23</value>
+ </data>
+ <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+ <data name="btnOK.TabIndex" type="System.Int32, mscorlib">
+ <value>0</value>
+ </data>
+ <data name="btnOK.Text" xml:space="preserve">
+ <value>OK</value>
+ </data>
+ <data name=">>btnOK.Name" xml:space="preserve">
+ <value>btnOK</value>
+ </data>
+ <data name=">>btnOK.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=">>btnOK.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>btnOK.ZOrder" xml:space="preserve">
+ <value>2</value>
+ </data>
+ <data name="rdTransactional.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <data name="rdTransactional.Location" type="System.Drawing.Point, System.Drawing">
+ <value>12, 12</value>
+ </data>
+ <data name="rdTransactional.Size" type="System.Drawing.Size, System.Drawing">
+ <value>379, 17</value>
+ </data>
+ <data name="rdTransactional.TabIndex" type="System.Int32, mscorlib">
+ <value>1</value>
+ </data>
+ <data name="rdTransactional.Text" xml:space="preserve">
+ <value>Transactional method: Will wholly succeed or fail. This is the official method</value>
+ </data>
+ <data name=">>rdTransactional.Name" xml:space="preserve">
+ <value>rdTransactional</value>
+ </data>
+ <data name=">>rdTransactional.Type" xml:space="preserve">
+ <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>rdTransactional.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>rdTransactional.ZOrder" xml:space="preserve">
+ <value>1</value>
+ </data>
+ <data name="rdNonTransactional.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <data name="rdNonTransactional.Location" type="System.Drawing.Point, System.Drawing">
+ <value>12, 36</value>
+ </data>
+ <data name="rdNonTransactional.Size" type="System.Drawing.Size, System.Drawing">
+ <value>379, 17</value>
+ </data>
+ <data name="rdNonTransactional.TabIndex" type="System.Int32, mscorlib">
+ <value>2</value>
+ </data>
+ <data name="rdNonTransactional.Text" xml:space="preserve">
+ <value>Non-transactional method. Can partially fail, but failed operations are logged</value>
+ </data>
+ <data name=">>rdNonTransactional.Name" xml:space="preserve">
+ <value>rdNonTransactional</value>
+ </data>
+ <data name=">>rdNonTransactional.Type" xml:space="preserve">
+ <value>System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>rdNonTransactional.Parent" xml:space="preserve">
+ <value>$this</value>
+ </data>
+ <data name=">>rdNonTransactional.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.ClientSize" type="System.Drawing.Size, System.Drawing">
+ <value>449, 107</value>
+ </data>
+ <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
+ <value>CenterParent</value>
+ </data>
+ <data name="$this.Text" xml:space="preserve">
+ <value>Choose Package Upload Method</value>
+ </data>
+ <data name=">>$this.Name" xml:space="preserve">
+ <value>PackageUploadOptionDialog</value>
+ </data>
+ <data name=">>$this.Type" xml:space="preserve">
+ <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+</root>
\ No newline at end of file
Modified: trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.Designer.cs 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.Designer.cs 2011-09-15 18:02:38 UTC (rev 6134)
@@ -1,7 +1,7 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
-// Runtime Version:2.0.50727.4952
+// Runtime Version:2.0.50727.4959
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@@ -142,6 +142,24 @@
}
/// <summary>
+ /// Looks up a localized string similar to Set Resource: {0} ({1:0.00}%).
+ /// </summary>
+ internal static string ProgressSetResource {
+ get {
+ return ResourceManager.GetString("ProgressSetResource", resourceCulture);
+ }
+ }
+
+ /// <summary>
+ /// Looks up a localized string similar to Set Resource Data: {0} ({1:0.00}%).
+ /// </summary>
+ internal static string ProgressSetResourceData {
+ get {
+ return ResourceManager.GetString("ProgressSetResourceData", resourceCulture);
+ }
+ }
+
+ /// <summary>
/// Looks up a localized string similar to Updated references.
/// </summary>
internal static string ProgressUpdatedReferences {
Modified: trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.resx
===================================================================
--- trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.resx 2011-09-15 07:58:37 UTC (rev 6133)
+++ trunk/Tools/Maestro/Maestro.Packaging/Properties/Resources.resx 2011-09-15 18:02:38 UTC (rev 6134)
@@ -153,6 +153,12 @@
<value>Reading package contents ...</value>
<comment>A message that is displayed while reading the package contents</comment>
</data>
+ <data name="ProgressSetResource" xml:space="preserve">
+ <value>Set Resource: {0} ({1:0.00}%)</value>
+ </data>
+ <data name="ProgressSetResourceData" xml:space="preserve">
+ <value>Set Resource Data: {0} ({1:0.00}%)</value>
+ </data>
<data name="ProgressUpdatedReferences" xml:space="preserve">
<value>Updated references</value>
<comment>A progress message that is displayed when references are updated</comment>
Property changes on: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI.Native
___________________________________________________________________
Modified: svn:ignore
- bin
obj
+ bin
obj
*.user
More information about the mapguide-commits
mailing list